transforming an m-file to an anonymous or inline function
3 views (last 30 days)
Show older comments
Hi, I have the following function
function out=myfun(x,y,z)
aa=h1(x,y,z);
dd=h2(x,y,z);
out=[x(1)+y(2)
x(3)+z(2)
x(1)+aa
x(3)+dd*y(1)];
Is there any way I can write this function either as inline or anonymous? that is without writing an m-file?
Thanks, J.
0 Comments
Accepted Answer
Daniel Shub
on 24 Aug 2011
You need to get rid of the temp variables aa and dd:
aa = @(x,y,z)(h1(x,y,z));
dd = @(x,y,z)(h1(x,y,z));
fcn = @(x,y,z)([x(1)+y(2); x(3)+z(2); x(1)+aa(x,y,z); x(3)+dd(x,y,z)*y(1)]);
2 Comments
Daniel Shub
on 24 Aug 2011
See my edit. You can keep splitting up h1 and h2 into functions that are whatever size you want. The key is you cannot have any temp variables.
More Answers (1)
Fangjun Jiang
on 24 Aug 2011
It is not recommended to use anonymous function due to the fact that the function has so many characters. If you wan to make it in line, just remove the first line 'function out=myfun(x,y,z)' and copy the rest of the code into your other M-script or M-function.
4 Comments
Fangjun Jiang
on 24 Aug 2011
Should be subfunctions in my previous comments. Search subfunctions in document for details.
Daniel Shub
on 24 Aug 2011
If your m-file is a script and you want to use a function that requires a function handle (e.g., fminsearch) then you need a second m-file with your function or an anonymous function.
See Also
Categories
Find more on Function Creation in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!