平均序列行 MATLAB 一次一列

Average sequence rows MATLAB one column at a time

我在变量 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`

这应该有效:

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

加一.... 这取决于你想如何平均..你可能还想考虑使用 ceil

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

鉴于 we 创建的规则间隔,您可以重塑然后使用 mean,就像这样 -

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

这里有一些小错误。在我的脑海中,调整您的版本的最简单方法是将 jj 更改为您想要的 "we" 中的数字。您也不需要使用 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;