我正在尝试为 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
相当于:[[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
将其包装到函数中,然后使用另一个函数来迭代行号和列号可能会起作用,但我在生成这组数字并使用 SQL 迭代它们时遇到问题。 欢迎任何意见/建议
最佳答案
试试:
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#`
示例 here .
(将 'mat01'
和 'mat02'
替换为合适的 matrixID
值。)
关于MySQL矩阵乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15502622/