2016-03-25 251 views
1

我有一個稀疏矩陣,它只有三個對角線中的元素。例如。Matlab有效的稀疏矩陣乘法

enter image description here

我也有在那裏我希望每個元素由對應的元件列向量的每一行中乘以稀疏矩陣的每行中的列向量。有沒有在MATLAB中做到這一點的有效方法?如果稀疏矩陣稱爲A和列向量B,我只試過

A.*repmat(B,[1,9]) 

這顯然是低效的。

+0

「列向量的每一行」只是一個標量。那是你在做什麼? –

+0

@HennadiiMadan是的,但不用擔心,Amro的解決方案就是我正在尋找的:) –

回答

4

這裏有一種方法:

C = bsxfun(@times, A, B) 

docs,結果矩陣C是稀疏的:

二元運算產生稀疏的結果,如果兩個操作數都很少,如果兩個全部結果都滿。 對於混合操作數,除非操作保留稀疏度,否則結果將爲滿。如果S稀疏並且F滿,則S + F,S * F和F \ S滿,,而S. * F和S & F稀疏。在某些情況下,即使矩陣只有零個元素,結果也可能很稀疏。

+0

@Adriaan,不,它運作良好 - 結果是稀疏矩陣:) –

+1

@Adriaan我添加了一個關於結果稀疏性的註釋 – Amro

+0

謝謝,Amro - 正是我期待的:) –