gpt4 book ai didi

Matlab - 匿名函数中的for循环

转载 作者:太空宇宙 更新时间:2023-11-03 19:09:09 25 4
gpt4 key购买 nike

我是 matlab 的新手,但我知道如何执行 for 循环和匿名函数。现在我想结合这些。

我想写:

sa = @(c) for i = 1:numel(biscs{c}), figure(i), imshow(biscs{c}{i}.Image), end;

但这是无效的,因为 matlab 似乎只希望换行符作为命令分隔符。我以清晰的方式编写的代码是(没有函数头):

for i = 1:numel(biscs{c})
figure(i)
imshow(biscs{c}{i}.Image)
end

我正在寻找一种解决方案,我可以像我的第一个示例那样在一行中使用匿名函数编写它。如果我可以用另一种方式创建该函数,我也会很高兴,只要我不需要新的函数 m 文件即可。

最佳答案

匿名函数可以包含多个语句,但不能包含显式循环或 if 子句。多个语句在元胞数组中传递,并一个接一个地求值。例如,此函数将打开一个图形并绘制一些数据:

fun = @(i,c){figure(i),imshow(imshow(biscs{c}{i}.Image)}

但是,这并没有解决循环问题。还好有ARRAYFUN .有了这个,您可以按如下方式编写循环:

sa = @(c)arrayfun(@(i){figure(i),imshow(biscs{c}{i}.Image)},...
1:numel(biscs{c}),'uniformOutput',false)

方便的是,此函数还返回 figureimshow 的输出,即各自的句柄。

关于Matlab - 匿名函数中的for循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5660660/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com