在Matlab中将1000x500矩阵重新整形为100x500

时间:2015-01-16 17:02:40

标签: arrays matlab matrix

我有1000x500矩阵(1000行,每行对应1分钟计数,500列对应不同高度级别)。我想计算10分钟的平均值(使用nanmean),这意味着我希望我的最终矩阵为100x500。是否有捷径可寻 ? 谢谢你的帮助。

3 个答案:

答案 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));