平均序列行MATLAB一次一列



我有一个数据数组,它是变量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`

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

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

这里有一些小错误。在我的脑海中,最简单的修改你的版本的方法就是把jj从"我们"改成你想要的数字。你也不需要使用2个for循环,因为你可以使用一维向量。这是一个可能的解决方案,但我觉得不是最好的。

    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;

应该可以:

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

一个加法……这取决于你想如何平均。您可能还想考虑使用ceil

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

最新更新