在 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));
我有一个 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));