使用MATLAB循环遍历arrayfun

时间:2016-10-05 14:54:47

标签: matlab

在MATLAB中,我想在循环中使用arrayfun而不使用函数for

一般语法如下:

arrayfun(@(x,i,j) func(x), M{i,j})

其中(i,j)是函数Mfunc(x)所应用的矩阵x = M的索引。

目的是为所有arrayfun(@(x,i,j) func(x), M{i,j})应用i=1,..,nj=1,...,n没有循环。

谢谢

1 个答案:

答案 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! : - )