Matlab高效稀疏矩阵乘法

时间:2016-03-25 12:32:35

标签: matlab sparse-matrix

我有一个稀疏矩阵,只有三个对角线的元素。例如。

enter image description here

我还有一个列向量,我希望将稀疏矩阵的每一行中的每个元素乘以列向量的每一行中的相应元素。在MATLAB中有一种有效的方法吗?如果稀疏矩阵被称为A和列向量B,我只尝试了

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

这显然效率低下。

1 个答案:

答案 0 :(得分:4)

这是一种方式:

C = bsxfun(@times, A, B)

根据docs,生成的矩阵C稀疏:

  

如果两个操作数都是稀疏的,则二元运算符会产生稀疏结果,如果两个操作数都已满,则会产生完整结果。 对于混合操作数,除非操作保留稀疏度,否则结果将为完整。如果S稀疏且F满,则S + F,S * F和F \ S满,,而S. * F和S& F稀疏。在某些情况下,即使矩阵的零元素很少,结果也可能是稀疏的。