平均序列行MATLAB一次一列

时间:2015-10-15 18:01:12

标签: matlab sequence average rows

我有一个变量m1的数据数组,它是一个288 X 13数组。对于每列,我需要按顺序平均24行12次。我已经多次尝试通过计算平均值来使用此索引we,但我得到的答案不正确。我期望的结果(meanf1)是一个12 X 13数组,显示每列数据的12行平均值。谢谢!

we = 1    25    49    73    97   121   145   169   193   217   241   265

    for ii = 1:13;
        for jj = 1:12;
            meanf1(jj,ii) = mean(m1(we(jj):we(jj)+23,ii));
        end;
    end`

3 个答案:

答案 0 :(得分:0)

这应该有效:

for jj = 1:12    
    meanf1(jj,:) = mean(m1((floor((1:288)./24) == jj),:));    
end

一个补充.... 这取决于你想要的平均值...你可能还想考虑使用ceil

meanf1(jj,:) = mean(m1((ceil((1:288)./24) == jj),:));

答案 1 :(得分:0)

考虑到由we创建的常规间隔,您可以重新整形,然后使用mean,就像这样 -

meanf1 = reshape(mean(reshape(m1(1:288,1:13),24,[]),1),12,13);

答案 2 :(得分:0)

这里有一些小错误。在我的头脑中,调整你的版本的最简单方法是将jj改为你想要的“我们”的数字。你也不需要使用2 for循环,因为你可以使用一个维度作为vecot。这是一种可能的解决方案,但我觉得它不是最好的。

    m1=rand(288,13);

    meanf1=ones(12,13); %preallocation is always better
    i=1;
    for jj = 1:24:265 ;
        meanf1(i,:) = mean(m1(jj:jj+23,:));
        i=i+1;
    end;