的子矩陣。如果,例如,我有一個5000x30矩陣和欲獲得10個子矩陣具有5000x3的尺寸,該怎麼辦我編碼在Matlab。我在這個問題上已經閱讀了幾篇文章,this one here for example,但是他們沒有一個保持子矩陣中的行數與主矩陣相同。劃分的矩陣與相同的行數,但不同的列數
由於我將處理非常大的矩陣,我寧願更快的代碼,如使用Matlab的內置函數,如mat2cell
或任何其他vectorized
方法,但不包含循環。
的子矩陣。如果,例如,我有一個5000x30矩陣和欲獲得10個子矩陣具有5000x3的尺寸,該怎麼辦我編碼在Matlab。我在這個問題上已經閱讀了幾篇文章,this one here for example,但是他們沒有一個保持子矩陣中的行數與主矩陣相同。劃分的矩陣與相同的行數,但不同的列數
由於我將處理非常大的矩陣,我寧願更快的代碼,如使用Matlab的內置函數,如mat2cell
或任何其他vectorized
方法,但不包含循環。
A = rand(5000,30);
b = {}; % Somewhere to store sub-matrices
for k = 1:10
b{k} = A(:, (k*3-2):(k*3));
end
對不起,但我不想使用循環。因此,偏好「矢量化」方法。 – nashynash
根據@beaker評論,使用reshape(A, 5000, 3, 10)
解決了我的問題。
5000乘30不是很大。當需要使用矩陣的某些部分時,僅僅使用'A(:,1:3)'或'A(:,22:25)'會出現什麼問題?你的問題不清楚你想要什麼樣的結果,以及你想如何使用結果矩陣。 – David
@David就像我說過的,我會處理非常大的矩陣,比如500000x300或更高。 「A(:1:3)」只會給我一個子矩陣。我想要的是每個具有如上所述的相同尺寸的10個子矩陣。每個子矩陣對應於一個物理行爲,我將使用它們進行進一步的計算。 – nashynash
'重塑(A,5000,3,10)'如何? – beaker