平均序列行 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;
我在变量 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;