2017-03-08 57 views
-1

我有一個叫做A的2m×2矩陣和叫做B的2×m矩陣。讓我們用B,C命名A的乘積: C = A * B;在matlab中分離矩陣的某些部分

其中C是2m乘m矩陣。我想找到包含C的一些部分的矩陣F. F是由2矩陣組成的並且包含元素C(1,1),C(2,1),C(3,2),C(4,2), C(5,3),C(6,3),... C(2m-1,m),C(2m,m)。 例如,考慮

A = [0,2;1,3;4,7;8,3;4,5;1,2] 
B=[1,4,6;5,7,3] 
C=A*B; 

在這種情況下:

F=[C(1,1),C(2,1);C(3,2),C(4,2);C(5,3),C(6,3)] 

但我喜歡爲了得到F不計算下的所有元素,因爲我想計算的C所有元素將是浪費時間的大m的值。任何人都可以提出一種在一般情況下找到F的方法嗎?

+0

誰能underst和問題? –

+0

我敢肯定,那個低估了這個問題的人甚至都無法理解它! –

+1

兩條評論:(1)你想要的輸出實際上是「m×2」而不是「2×m」。 (2)列索引上升到「m」,而不是「m/2」。 – rayryeng

回答

0

使用索引:

F = [C(1:2*m+2:end);C(2:2*m+2:end)]' 

要找到F不計算C您可以改用:

F=cell2mat(arrayfun(@(x) A(2*x-1:2*x,:)*B(:,x), 1:m,'uniformoutput',0))' 

(您必須設置m, A, and B如問題定義)

說明: F的每一行都是轉所述的子矩陣和B的柱例如的產物,在F中的第一行是的轉置:

A(1:2,:)*B(:,1) 

的下一行的轉置:

A(3:4,:)*B(:,2) 

所以該方法僅計算必需的值,僅通過由A的對應子矩陣B的每一列乘以並避免C.計算未使用的值

+0

無論如何找到F而不計算C的所有元素? –

+0

我認爲應該有。你能否更新這個問題來包含這個問題,我會檢查一下。 –

+0

我沒有把它添加到問題中。 –