transforming an m-file to an anonymous or inline function

1 次查看(过去 30 天)
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.

采纳的回答

Daniel Shub
Daniel Shub 2011-8-24
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 个评论
Junior
Junior 2011-8-24
The very reason I am post the question is because I don't want to insert for aa and dd, which are themselves very complicated expressions. For simplicity, I just defined them as h1(x,y,z) and h2(x,y,z). Thanks, J.
Daniel Shub
Daniel Shub 2011-8-24
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.

请先登录,再进行评论。

更多回答(1 个)

Fangjun Jiang
Fangjun Jiang 2011-8-24
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 个评论
Fangjun Jiang
Fangjun Jiang 2011-8-24
Should be subfunctions in my previous comments. Search subfunctions in document for details.
Daniel Shub
Daniel Shub 2011-8-24
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.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Function Creation 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by