在Matlab中重组矩阵

时间:2017-08-01 12:20:54

标签: matlab matrix

我在Matlab中有一个矩阵A = MxN,其中M = 23,N = 780。

我想每次采取所有23行和15列(780/15 = 52次)并且每次都附加它。

我想得到一个矩阵B = GxT,其中G是23 * 52,T是15。

我正在尝试使用重塑,除去任何好结果。

你告诉我一个解决方案吗?

3 个答案:

答案 0 :(得分:3)

如何使用reshapepermute

B = reshape(permute(reshape(A, [23,15,52]), [1 3 2]), [23*52 15]);

最佳,

答案 1 :(得分:1)

使用reshapepermuteas 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,但我认为这段代码应该可行。祝你的项目好运!