我有1000x500矩阵(1000行,每行对应1分钟计数,500列对应不同高度级别)。我想计算10分钟的平均值(使用nanmean),这意味着我希望我的最终矩阵为100x500。是否有捷径可寻 ? 谢谢你的帮助。
答案 0 :(得分:1)
重塑为10行矩阵,沿每列应用nanmean
,然后重新形成500列矩阵。让M
表示您的矩阵:
result = reshape(nanmean(reshape(M, 10, [])), [], size(M,2));
答案 1 :(得分:0)
如果我理解你想要的东西,你可以这样做:
% assuming data is your 1000x500 matrix
avgs = zeros(100, 500);
inds = 1:10;
for i = 0:99
avgs(i + 1, :) = nanmean(data(i * 10 + inds, :))
end
答案 2 :(得分:0)
您还可以将矩阵拆分为一百个10-by-500
矩阵的单元格;他们沿着列nanmean
然后再将它们放在一个矩阵中:
avgs = cell2mat(cellfun(@(X) nanmean(X,1), mat2cell(data,10*ones(100,1),[500]), 'uni', 0));