保存for循环生成的所有值

时间:2014-09-21 12:40:20

标签: matlab for-loop matrix mean

所以,我是MatLab的新手,我正在尝试一些我确信它是可行的。我不知道怎么回事。

以下是我正在尝试的内容:我从矩阵C生成一串结果(M)。矩阵C由16个单元组成(4x4单元格,每个单元格为90x6)。从这些细胞中的每一个,我尝试计算平均值。这给了我平均值,但在每次迭代后重写M:

for i=1:4;
for j=1:4;
M=mean2(C{i,j})
end
end

我需要的是一个4x4的矩阵,其中列出了所有C细胞的平均值,我该怎么做?

2 个答案:

答案 0 :(得分:1)

M = zeros( 4 ); %// pre-allocate !!!
for ii=1:4;
    for jj=1:4;
        M(ii,jj)=mean2(C{ii,jj})
    end
end

一些指示:

  1. 预分配 - 预先分配正在循环中更新的数组是一种非常好的做法 例如,请参阅this thread

  2. 最好是not to use i and j as variable names in Matlab

  3. 使用单元格数组时,您可能会发现cellfun是一个有用的工具:

    M = cellfun( @mean2, C );
    

答案 1 :(得分:0)

两种方式:

1)预先分配为@Shai说:

M = zeros( 4 );
for ii=1:4;
    for jj=1:4;
        M(ii,jj)=mean2(C{ii,jj})
    end
end

2)追加数组中的前一个元素

M = [];
for i=1:4;
for j=1:4;
M=[M;mean2(C{i,j})];
end
end

方法1肯定更好。但是想告诉你有两种方法..