【发布时间】:2013-03-08 07:29:40
【问题描述】:
我正在尝试为 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 迭代它们时遇到问题。 欢迎任何意见/建议
【问题讨论】:
-
你的问题真的是“如何在 MySQL 中生成数字序列”吗?
-
MySQL 是一个数据库管理系统,而不是一个线性代数引擎。您应该将内容读入更合适的工具(如 Java 或 C++ 应用程序)中,在那里执行矩阵操作,并在必要时将结果发布回数据库。
-
ofc,最简单的解决方案是使用 Java 或 C++(或其他任何东西),但是我正在处理非常大的矩阵(基本上大到足以将它们放入内存中是不可能的)并且它可以进行矩阵操作以合理的速度相当复杂,因为它只需要在内存中保留块和 IO 开销来处理矩阵所需的大量读取和写入。至于生成 MySQL 的数字序列,这当然是一种解决方案,我不知道该怎么做,更好的解决方案是将一对 SELECTed 行输入 SQL 函数并返回表作为结果。
标签: mysql sql math matrix linear-algebra