MySQL矩阵乘法

Azo*_*lin 10 mysql sql math matrix linear-algebra

我正在尝试为MySQL编写矩阵乘法,并且有点卡住:

基本上,我的矩阵以
[row#,column#,matrixID,value] 格式存储,所以例如矩阵[3 x 2]将是这样的:

[row#, column#, matrixID, value]
  1      1        mat01    1
  1      2        mat01    2
  1      3        mat01    3
  2      1        mat01    4
  2      2        mat01    5
  2      3        mat01    6
Run Code Online (Sandbox Code Playgroud)

相当于:[[1 2 3],[4 5 6]]

下面很好地计算了matrix1*matrix2的单个元素:

   SELECT SUM(row1.`val` * col2.`val`)
   FROM matValues row1
   INNER JOIN  `matValues` col2
   WHERE row1.`row` = 1 AND row1.`mID`='matrix1' AND 
         col2.`mID`='matrix2' AND col2.`col` = 1 AND row1.col = col2.row
Run Code Online (Sandbox Code Playgroud)

将此包装到函数中,然后使用另一个函数迭代行和列号可能会起作用,但是我在生成这组数字并使用SQL迭代它们时遇到问题.欢迎任何建议/意见

小智 18

尝试:

select m1.`row#`, m2.`column#`, sum(m1.value*m2.value) 
from matValues m1
join matValues m2 on m2.`row#` = m1.`column#` 
where m1.matrixID = 'mat01' and m2.matrixID = 'mat02'
group by m1.`row#`, m2.`column#`
Run Code Online (Sandbox Code Playgroud)

这里的例子.

(替换'mat01''mat02'使用合适的matrixID值.)