2017-08-01 123 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