在MATLAB中,我想在循环中使用arrayfun
而不使用函数for
。
一般语法如下:
arrayfun(@(x,i,j) func(x), M{i,j})
其中(i,j)
是函数M
中func(x)
所应用的矩阵x = M
的索引。
目的是为所有arrayfun(@(x,i,j) func(x), M{i,j})
应用i=1,..,n
和j=1,...,n
没有循环。
谢谢
答案 0 :(得分:0)
好吧,Xzibit会说"哟dawg,我听说你喜欢for
以外的所有内容,所以我们在你的arrayfun
中放了一个arrayfun
,这样你就可以循环当你循环播放"
result = reshape(arrayfun( ...
@(k) arrayfun(@(x) func(x), M{k}), ...
1:numel(M), ...
'UniformOutput', false ...
), size(M));
甚至更好:
result = arrayfun( ...
@(k) arrayfun(@func, M{k}), ...
reshape(1:numel(M),size(M)), ...
'UniformOutput', false ...
);
但是 - 加油!-one可以做比Xzibit更好的MATLAB! : - )