C++ 使用 MKL 库实现对角矩阵乘普通矩阵
以下是使用 MKL 实现对角矩阵乘普通矩阵的 C++ 程序:
#include <iostream>
#include <mkl.h>
int main() {
const int n = 3;
double a[n] = { 1.0, 2.0, 3.0 }; // 对角矩阵
double b[n * n] = { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 }; // 普通矩阵
double c[n * n]; // 结果矩阵
cblas_dgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans, n, n, 1, a, n, b, n, 0, c, n);
// 输出结果矩阵
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
std::cout << c[i * n + j] << " ";
}
std::cout << std::endl;
}
return 0;
}
首先定义了一个 3x3 的对角矩阵 'a' 和一个 3x3 的普通矩阵 'b',然后定义了一个结果矩阵 'c'。
使用 cblas_dgemm() 函数进行矩阵乘法运算,其中 CblasRowMajor 表示使用行主序存储,CblasNoTrans 表示不进行转置运算,'n' 表示矩阵的维度,'1' 表示对角矩阵乘普通矩阵,'a' 和 'b' 分别表示对角矩阵和普通矩阵,'0' 表示不加偏置,结果写入 'c' 矩阵中。
最后输出结果矩阵 'c'。
原文地址: https://www.cveoy.top/t/topic/onJx 著作权归作者所有。请勿转载和采集!