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