﻿功能:稀疏矩阵乘法
 
格式:
SparseMul2(A,b)
A:列数为3的矩阵变量(稀疏矩阵存储格式,第1列为元素值,第2列为行索引值,第3列为列索引值,元素的存储顺序没有要求)
b:一个行数为1的矩阵变量,注意,b的元素个数(列数)不能小于A稀疏矩阵的行数
 
说明:考虑到一些验证,就写了本函数.因为怕计算产生很大的矩阵,就只考虑矩阵相乘产生一列数据的情况.程序执行完毕返回一个n*1的矩阵变量,其中n表示稀疏矩阵A的列数
 
原理:c=b*A
 
例子:
 
a =
[ 6.86533282364967    7.98659349697949    6.23078936069775
  6.09938013651379    4.40511563532293    1.70791064002920
  2.79247927609481    2.17517939963154    0.70837995070423
  3.56616202907924    5.91961486075055    1.27937002632738
  4.79660233706078    5.82348791222250    0.97142052416290 ]
b =
[ 6.29773471797711    8.82882419919075    4.03056151886962    8.28934439843956    4.10229858667697 ]
 
//假如系统之前存在上面的a、b矩阵
asp={SparseCreate<矩阵运算\SparseCreate>}(a)//先产生一个稀疏矩阵存储格式的矩阵以备计算
asp =
[ 6.86533282364967    1.00000000000000    1.00000000000000
  7.98659349697949    1.00000000000000    2.00000000000000
  6.23078936069775    1.00000000000000    3.00000000000000
  6.09938013651379    2.00000000000000    1.00000000000000
  4.40511563532293    2.00000000000000    2.00000000000000
  1.70791064002920    2.00000000000000    3.00000000000000
  2.79247927609481    3.00000000000000    1.00000000000000
  2.17517939963154    3.00000000000000    2.00000000000000
  0.70837995070423    3.00000000000000    3.00000000000000
  3.56616202907924    4.00000000000000    1.00000000000000
  5.91961486075055    4.00000000000000    2.00000000000000
  1.27937002632738    4.00000000000000    3.00000000000000
  4.79660233706078    5.00000000000000    1.00000000000000
  5.82348791222250    5.00000000000000    2.00000000000000
  0.97142052416290    5.00000000000000    3.00000000000000 ]
  
ab=SparseMul2(asp,b)//计算a*b的值
ab =
[ 157.579899563603    170.916045569186    71.7640660406717 ]
{mul<矩阵运算\mul>}(b,a)//可以验证,结果和上面一样
ans =
[ 157.579899563603    170.916045569186    71.7640660406717 ]