我是 swift 的新手,正在尝试使用 Accelerate 框架将两个矩阵相乘。
但是我无法让它工作。任何帮助,将不胜感激。代码如下:
import Accelerate
let firstMatrix :[[Float]] = [[1,2],[2,3]]
let secondMatrix : [[Float]] = [[3,2],[1,4]]
var answerMatrix :[[Float]] = [[0,0],[0,0]]
cblas_dgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans, 2, 2, 2, 1.0, firstMatrix, 2, secondMatrix, 2, 0.0, &answerMatrix, 2)
print(answerMatrix)
最佳答案
有两个问题:
cblas_dgemm()
用于“ double 矩阵”,即元素具有Double
类型。对于Float
(单精度)矩阵,使用cblas_sgemm()
。- 每个矩阵都必须作为指向一维数组的指针传递给函数。
例子:
let firstMatrix : [Double] = [1,2 , 2,3]
let secondMatrix : [Double] = [3,2 , 1,4]
var answerMatrix : [Double] = [0,0 , 0,0]
cblas_dgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans, 2, 2, 2, 1.0,
firstMatrix, 2, secondMatrix, 2, 0.0, &answerMatrix, 2)
print(answerMatrix)
// [5.0, 10.0, 9.0, 16.0]
关于swift - 在 Swift 中使用 cblas_dgemm 进行矩阵乘法时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34241457/