2016-03-25 252 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 - 正是我期待的:) –