2015-08-03 35 views
1

我簡化了我的問題,讓我說我有三個矩陣。1)提取子矩陣,2)矢量化,然後3)放回

enter image description here

我想提取紅盒裝子矩陣。我定義了

S = [1 4; 
    2 5] 

它們是上述矩陣的線性指數。因此,A(S), B(S)C(S)可以提取三個矩陣的條目。

我把它們打包成矢量V = [ A(S)(:); B(S)(:); C(S)(:) ]。讓說,一些操作後,我得到一個新的向量

V_new = [12 9 8 12 21 8 7 5 3 12 11 10]'

這裏來我的問題:

例如,對於矩陣A,我想獲得

2->12, 5->9, 4->8 and 6->12

這是我的V_new的前四項。

由於我有大約200個矩陣,我不知道在200個矩陣和更新的矢量V_new同時交換。正在編寫一個for-loop做這個目的的最佳方式?

在此先感謝。

+0

「A」,「B」和「C」分開的矩陣,還是可以連接成單個3D矩陣(即他們都有相同的尺寸)?在3D矩陣中,這將非常簡單... – Dan

+0

@dan'A','B'和'C'在我的問題中具有相同的維度。如你所說,請給我一個提示如何使用3D矩陣? – nam

回答

2

假設您的ABC矩陣具有相同的尺寸,而是使用3D矩陣。

例如假設你的榜樣矩陣

M = cat(3,A,B,C) 

沒有提取的4個左上元素:

M_subset = M(1:2,1:2,:) 

然後將它們重新塑造成你有載體:

V = M_subset(:) 

然後操縱它來獲得V_new最後把它重新放回原處:

M(1:2,1:2,:) = reshape(V_new,2,2,[]) 
+0

非常感謝。最後一個腳本很棒=)。 – nam