我有一个变量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`
答案 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;