Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
回复
 
主题工具 显示模式
旧 2019-12-10, 16:49   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 如何在MATLAB匿名函数中执行多个语句?

我想做这样的事情:

>> foo = @() functionCall1() functionCall2() 所以当我说:

>> foo() 它将执行functionCall1() ,然后执行functionCall2() 。 (我觉得我需要类似C的运算符

编辑:

functionCall1和functionCall2不一定是返回值的函数。


回答:
尝试通过命令行执行所有操作而不在m文件中保存函数可能是一项复杂而混乱的工作,但这是我想出的一种方法...

首先,创建您的匿名函数并将其句柄放入单元格数组中

fcn1 = @() ...; fcn2 = @() ...; fcn3 = @() ...; fcnArray = {fcn1 fcn2 fcn3}; ...或者,如果您已经定义了函数(例如在m文件中),则将函数句柄放置在像这样的单元格数组中:

fcnArray = {@fcn1 @fcn2 @fcn3}; 然后,您可以创建一个新的匿名函数,以使用内置函数cellfunfeval调用数组中的每个函数:

foo = @() cellfun(@feval,fcnArray); 尽管看起来很有趣,但它确实有效。

编辑:如果需要使用输入参数调用fcnArray的函数, fcnArray首先必须确保数组中的所有函数都需要相同数量的输入。在这种情况下,下面的示例演示如何使用每个输入参数调用函数数组:

foo = @(x) cellfun(@feval,fcnArray,x); inArgs = {1 'a' [1 2 3]}; foo(inArgs); %# Passes 1 to fcn1, 'a' to fcn2, and [1 2 3] to fcn3
警告词: cellfun的文档指出未指定输出元素的计算顺序 ,因此不应依赖该顺序 。这意味着不能保证fcn1在fcn2或fcn3之前得到评估。如果订单很重要,则不应使用上述解决方案。



更多&回答...
poster 当前离线   回复时引用此帖
回复

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 23:57


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.