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