Asked by Richard
on 8 Jan 2012

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.

Answer by Chandra Kurniawan
on 8 Jan 2012

Edited by MathWorks Support Team
on 22 May 2019

Accepted Answer

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:

Chandra Kurniawan
on 8 Jan 2012

to evaluate this function just type :

y = feval(@f,x)

Richard
on 8 Jan 2012

Thanks, Chandra! :)

Salaheddin Hosseinzadeh
on 13 Mar 2014

The problem or lets say the dificulty of this code is that this couple of lines should be saved as a function and I personally don't wanna do that for a simple function like this! or even complicated ones!

Not my favorite way of defining a function

Sign in to comment.

Answer by Walter Roberson
on 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.

Salaheddin Hosseinzadeh
on 13 Mar 2014

Sign in to comment.

Answer by Junaid
on 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.

Answer by cyril
on 21 Mar 2014

Edited by cyril
on 21 Mar 2014

> f = @(x) 2*x^3+7*x^2+x;

> f(0)

0

surprising no one mentioned anonymous functions...

Salaheddin Hosseinzadeh
on 21 Mar 2014

@ Cyril

Walter did, just make sure you checked the other answers and comments!

Sign in to comment.

Answer by samy youssef
on 11 Mar 2015

Edited by Walter Roberson
on 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

Walter Roberson
on 26 Sep 2016

Okay... but irrelevant to the original question.

Sign in to comment.

Answer by Nikitha Challa
on 26 Sep 2016

x = x + a/x 2 in matlab code

John D'Errico
on 26 Sep 2016

Not a function at all. This is not even valid MATLAB code as written.

Walter Roberson
on 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

Sign in to comment.

Opportunities for recent engineering grads.

Apply Today
## 2 Comments

## Leia Sofia Mendez (view profile)

## Direct link to this comment

https://au.mathworks.com/matlabcentral/answers/25568-defining-function-handles-in-matlab#comment_472138

## Walter Roberson (view profile)

## Direct link to this comment

https://au.mathworks.com/matlabcentral/answers/25568-defining-function-handles-in-matlab#comment_472149

Sign in to comment.