MATLAB: Inline VS anonymous functions

anonymous functioninline()

I don't see differences between… but – maybe @fun is more wide than inline-function
>> a
a =
1
>> x=1:10
x =
1 2 3 4 5 6 7 8 9 10
>> y=@(x) x.^a
y =
@(x)x.^a
>> y(x)
ans =
1 2 3 4 5 6 7 8 9 10
>> a=3
a =
3
>> y(x)
ans =
1 2 3 4 5 6 7 8 9 10
>> z=inline('x.^a','x')
z =
Inline function:
z(x) = x.^a
>> z(x)
??? Error using ==> inlineeval at 15 Error in inline expression ==> x.^a Undefined function or variable 'a'.

Best Answer

Step 1 - define anonymous function in constant a and variable x:
a = 1;
y = @(x) x.^a;
Step 2 - change constant in the workspace, but the anonymous function remains unchanged since a was taken as a parameter in step 1
a = 3;
y(x)
Step 3 - in both cases the constant a is not defined at the moment the anonymous and inline fcns are created, thus the error in both cases
clear all
y = @(x) x.^a;
y(1)
z = inline('x.^a','x')
z(x)
Step 4 alternatives
y = @(x,a) x.^a;
y(1,2)
z = inline('x.^a','x','a')
z(1,2)
inline is an eval wrapper and is much slower than anonymous fcns.
Related Question