2017-08-01 56 views
1

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

我想每次都取23行15列(780/15 = 52次)并每次追加。

我希望得到一个矩阵B = GXT,其中G是23 * 52,T是15

我试图用重塑,whitout任何好的结果。

你是否建议我一个解决方案?

回答

3

如何使用reshapepermute

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

最佳,

+0

@gnovice谢谢,我没有理解这部分的问题,但它是有道理的。我已经更新了我的答案。 – Ratbert

+0

它工作正常!谢谢。只是一个缺少关闭排列的支架。 – Giovanna

+0

好的,我已经纠正了我的答案。不要忘记接受答案来解决问题。 – Ratbert

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在我的面前,但是我觉得这个代码应工作。祝你的项目好运!

1

使用reshapepermuteas suggested by Ratbert)的溶液可能将是最快的,但为了完整性还可以通过使用mat2cell收集子矩阵中的单元阵列和重建使用vertcat矩阵做到这一点:

B = mat2cell(A, 23, repmat(15, [1 52])); 
B = vertcat(B{:}); 
+0

好的答案!我不会想到这一点。 – Ratbert