Defining function handles in MATLAB
364 次查看(过去 30 天)
显示 更早的评论
How might I define a function handle?
For example, I want to define a function f(x)=2*x^3+7*x^2+x
I want MATLAB to evaluate f(x) at random values x. I have heard of feval and fhandles, but I don't know how to do it.
Thanks.
2 个评论
Leia Sofia Mendez
2017-7-26
编辑:Walter Roberson
2017-7-26
This was the code I was trying to write:
a= 0.0009
a= convtime([1],'samples','seconds')
This code gave an error saying that my function (convtime) was undefined. How you define a function in MATLAB?
Walter Roberson
2017-7-26
Leia Sofia Mendez:
convtime appears to be from the File Exchange https://www.mathworks.com/matlabcentral/fileexchange/28204-time---rate-unit-conversion-function .
You should go to that link, and click the download button, and download the .zip file. You should unzip to a directory that is not under your MATLAB installation directory. You would then use pathtool in MATLAB to add that directory to your MATLAB path.
采纳的回答
Chandra Kurniawan
2012-1-8
编辑:MathWorks Support Team
2019-5-22
Hi, Richard.
To evaluate f(x) at different values of x, you can create an .m file and write this code:
function y = f(x)
y = 2 * (x^3) + 7 * (x^2) + x;
If you save the file under the name 'f.m', you can run the function by typing this code in the Command Window or a separate .m file.
x = randi(7);
y = f(x)
The randi function above generates a 1-by-5 row vector of random integers between 1 and 10. The values returned by f are stored in a 1-by-5 row vector y.
For more information about creating functions, see:
You can create a handle to the function f with an @ sign. For example, create a handle named myHandle as follows:
myHandle = @f;
Now you can run f indirectly by using its handle.
y = myHandle(x)
For more information about function handles, see:
5 个评论
更多回答(6 个)
Walter Roberson
2012-1-8
Function handle version:
f = @(x) 2*x^3+7*x^2+x;
Then f is already the function handle, and you can call f(3.7) (for example)
There is no need to use feval() for this, but you could.
1 个评论
Salaheddin Hosseinzadeh
2014-3-13
I rather this anonymous way of defining a function! It's way easier. I also know another way of doing this, surprisingly nobudy mentioned that so far! lol I'm gonna put it in the answers.
Junaid
2012-1-8
Dear Richard,
To define a function in matlab you can do following syntax of given function:
function n = F(x)
n= 2*x^3+7*x^2+x;
that is it. You can put end at the end of function. But it is also acceptable not to put to various matlab versions. If you put end for one function then you have to put for all function in single m file.
then you can generate random numbers, either integer or double, and can get the values of this function.
cyril
2014-3-21
编辑:cyril
2014-3-21
> f = @(x) 2*x^3+7*x^2+x;
> f(0)
0
surprising no one mentioned anonymous functions...
1 个评论
Salaheddin Hosseinzadeh
2014-3-21
@ Cyril
Walter did, just make sure you checked the other answers and comments!
samy youssef
2015-3-11
编辑:Walter Roberson
2016-9-26
here is a function i developed to calculate the log of any number with different base:
function d =log_for_diff_base(myNumber,myBase)
x=log(myNumber);
y=log(myBase);
d=x/y;
end
Nikitha Challa
2016-9-26
x = x + a/x 2 in matlab code
2 个评论
John D'Errico
2016-9-26
编辑:John D'Errico
2016-9-26
Not a function at all. This is not even valid MATLAB code as written.
Walter Roberson
2016-9-26
That does not appear to be a question, and it is not an Answer to what was asked here?
If the question is to solve the equation
x == x + a/(x^2)
then for finite a values, the solutions are -inf and +inf as a/(x^2) would be 0 for those values, leading to the equality -inf == -inf and +inf == +inf
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Startup and Shutdown 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!