Defining function handles in MATLAB

1 147 vues (au cours des 30 derniers jours)
Richard
Richard le 8 Jan 2012
Commenté : Voss le 4 Fév 2023
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 commentaires
Leia Sofia Mendez
Leia Sofia Mendez le 26 Juil 2017
Modifié(e) : Walter Roberson le 26 Juil 2017
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
Walter Roberson le 26 Juil 2017
Leia Sofia Mendez:
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.

Connectez-vous pour commenter.

Réponse acceptée

Chandra Kurniawan
Chandra Kurniawan le 8 Jan 2012
Modifié(e) : MathWorks Support Team le 22 Mai 2019
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 commentaires
Piyush Gade
Piyush Gade le 4 Fév 2022
Whatever this is, this doesn't work.
Mark Jackson
Mark Jackson le 11 Oct 2022
I recommend clicking 'Getting Started.'

Connectez-vous pour commenter.

Plus de réponses (6)

Walter Roberson
Walter Roberson le 8 Jan 2012
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 commentaire
Salaheddin Hosseinzadeh
Salaheddin Hosseinzadeh le 13 Mar 2014
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.

Connectez-vous pour commenter.


Junaid
Junaid le 8 Jan 2012
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.
  1 commentaire
Richard
Richard le 8 Jan 2012
Thanks, Junaid! :)

Connectez-vous pour commenter.


cyril
cyril le 21 Mar 2014
Modifié(e) : cyril le 21 Mar 2014
> f = @(x) 2*x^3+7*x^2+x;
> f(0)
0
surprising no one mentioned anonymous functions...
  1 commentaire
Salaheddin Hosseinzadeh
Salaheddin Hosseinzadeh le 21 Mar 2014
@ Cyril
Walter did, just make sure you checked the other answers and comments!

Connectez-vous pour commenter.


samy youssef
samy youssef le 11 Mar 2015
Modifié(e) : Walter Roberson le 26 Sep 2016
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
  1 commentaire
Walter Roberson
Walter Roberson le 26 Sep 2016
Okay... but irrelevant to the original question.

Connectez-vous pour commenter.


Nikitha Challa
Nikitha Challa le 26 Sep 2016
x = x + a/x 2 in matlab code
  2 commentaires
John D'Errico
John D'Errico le 26 Sep 2016
Modifié(e) : John D'Errico le 26 Sep 2016
Not a function at all. This is not even valid MATLAB code as written.
Walter Roberson
Walter Roberson le 26 Sep 2016
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

Connectez-vous pour commenter.


Karima Benkhlil
Karima Benkhlil le 4 Fév 2023
f(x) = exp(x^2 ) (x3+4x+1) how to define it
  1 commentaire
Voss
Voss le 4 Fév 2023
f = @(x)exp(x.^2).*(x.^3+4*x+1);

Connectez-vous pour commenter.

Catégories

En savoir plus sur Startup and Shutdown dans Help Center et File Exchange

Produits

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by