2016-01-21 66 views
0

的子矩陣。如果,例如,我有一個5000x30矩陣和欲獲得10個子矩陣具有5000x3的尺寸,該怎麼辦我編碼在Matlab。我在這個問題上已經閱讀了幾篇文章,this one here for example,但是他們沒有一個保持子矩陣中的行數與主矩陣相同。劃分的矩陣與相同的行數,但不同的列數

由於我將處理非常大的矩陣,我寧願更快的代碼,如使用Matlab的內置函數,如mat2cell或任何其他vectorized方法,但不包含循環。

+1

5000乘30不是很大。當需要使用矩陣的某些部分時,僅僅使用'A(:,1:3)'或'A(:,22:25)'會出現什麼問題?你的問題不清楚你想要什麼樣的結果,以及你想如何使用結果矩陣。 – David

+0

@David就像我說過的,我會處理非常大的矩陣,比如500000x300或更高。 「A(:1:3)」只會給我一個子矩陣。我想要的是每個具有如上所述的相同尺寸的10個子矩陣。每個子矩陣對應於一個物理行爲,我將使用它們進行進一步的計算。 – nashynash

+6

'重塑(A,5000,3,10)'如何? – beaker

回答

0
A = rand(5000,30); 
b = {}; % Somewhere to store sub-matrices 
for k = 1:10 
    b{k} = A(:, (k*3-2):(k*3)); 
end 
+0

對不起,但我不想使用循環。因此,偏好「矢量化」方法。 – nashynash

1

根據@beaker評論,使用reshape(A, 5000, 3, 10)解決了我的問題。

相關問題