在 Matlab 中将 1000x500 矩阵重塑为 100x500

reshaping 1000x500 matrix to 100x500 in Matlab

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

如果我理解正确,你可以这样做:

% 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

重塑为 10 行矩阵,沿每列应用 nanmean,然后重塑回 500 列矩阵。让 M 表示您的矩阵:

result = reshape(nanmean(reshape(M, 10, [])), [], size(M,2));

您也可以将矩阵拆分为一个包含一百个 10-by-500 矩阵的单元格; nanmean 它们沿着列排列,然后再次将它们放入矩阵中:

avgs = cell2mat(cellfun(@(X) nanmean(X,1), mat2cell(data,10*ones(100,1),[500]), 'uni', 0));