我在Matlab中有一个矩阵A = MxN,其中M = 23,N = 780。
我想每次采取所有23行和15列(780/15 = 52次)并且每次都附加它。
我想得到一个矩阵B = GxT,其中G是23 * 52,T是15。
我正在尝试使用重塑,除去任何好结果。
你告诉我一个解决方案吗?
答案 0 :(得分:3)
如何使用reshape
和permute
:
B = reshape(permute(reshape(A, [23,15,52]), [1 3 2]), [23*52 15]);
最佳,
答案 1 :(得分:1)
使用reshape
和permute
(as suggested by Ratbert)的解决方案可能是最快的,但为了完整性,您还可以通过使用{{在单元格数组中收集子矩阵来实现此目的3}}并使用mat2cell
重建矩阵:
B = mat2cell(A, 23, repmat(15, [1 52]));
B = vertcat(B{:});
答案 2 :(得分:0)
这是一个有趣的问题。你有你试过的代码吗?我想我得到了你想做的事情,所以我会在这里创建一个代码。
%Initialize matrix A here with whatever numbers you have.
ResultMat = zeros((23*52),15); TempColsMat = zeros(1,15);
for row = 1 : 23
k = 0;
for col = 1 : 52
TempColsMat = A(row,(k : (k + 15)));
ResultMat = (TempColsMat(:,:),:);
k = k + 15;
end
end
我花了一段时间来弄清楚,因为我没有在我面前使用MATLAB,但我认为这段代码应该可行。祝你的项目好运!