2010-02-20 123 views
13

Octave有沒有計算和存儲矩陣乘積的對角線的方法?如何僅計算Octave中矩陣乘積的對角線?

基本上像做:vector = diag(A*B);

我不關心任何的A*B除對角線上的值。矩陣大小大約爲80k x 1212 x 80k,所以即使我不在乎速度/額外的內存,它也不適合RAM。

奇怪的是,由於Octave是一個龐大的數據集和對角線的包非常重要,所以它應該是可能的。

回答

17

對角線中的第一個元素是A的第一行和B的第一列的標量乘積。對角線中的第二個元素是A的第二行和B的第二列的標量乘積。

換句話說:

vector = sum(A.*B',2); 
+1

我看到你很好地利用了5分鐘的寬限期進行編輯。 ;) – gnovice 2010-02-20 04:53:31

+0

我很高興寬限期存在。我似乎只在我提交時看到我的重大錯誤。 :) – Jonas 2010-02-20 12:46:45

9

這是你如何能做到這一點在MATLAB(可能是類似於八度語法):

vector = sum(A.*B',2); 

這隻會計算操作A*B的結果對角線作爲列向量vector

0

其實我認爲這是一個的第一行與第一B柱的點積...第二對角線元素是第二行第二列的點積...等

+0

是的。我輸錯了。 – Jonas 2010-02-20 04:48:49