7 matlab loops anonymous-function
我发现匿名函数非常有用,但很多时候我需要使用循环才能使函数正常工作.例如:
while val<tolerance
.....
end
Run Code Online (Sandbox Code Playgroud)
我知道我可以将函数保存在一个单独的文件中,有时我可以对代码进行矢量化,然后匿名函数可以工作,但在某些情况下很难找到for循环的替代方法.
Matlab文档没有讨论它或说它是不可能的.有任何想法吗?
该函数式编程的Mathworks公司的文件交换结构正是你所需要的.这些功能中的每一个都设计用于匿名功能.它们将在关于MATLAB博客艺术的Loren的第3部分系列中详细讨论:第1 部分, 第2 部分和第3部分.
特别是第3部分讨论了将循环实现为函数.为了完整起见,我将借用函数式编程FEX提交中的一些代码来演示如何在m代码中使用匿名函数中的while循环.首先,定义一个loop
函数:
function x = loop(x, continueFcn, f)
% Inputs:
% x - Initial state (can be cell array of arguments to f)
% continueFcn - Continue function, returns true iff the loop should go on
% f - Function of the state (x) to run every iteration
while ~continueFcn(x{:})
x = f(x{:});
end
end
Run Code Online (Sandbox Code Playgroud)
例如,提供val
wile有一些初始值,val0
比方说.此外,假设这StuffDoneEachWhileLoop
是一个定义变量val
应如何在每个while循环中更新的函数.然后:
myFunc = @(n) loop(val0, ... % Initialize state
@(val) val < tolerance, ... % OP condition
@(val) StuffDoneEachWhileLoop(val)); %
Run Code Online (Sandbox Code Playgroud)
可以对上述想法进行各种扩展.有关详细信息,请参阅Tucker McClure的功能编程FEX提交.
归档时间: |
|
查看次数: |
3841 次 |
最近记录: |