mkl实现对角矩阵乘普通矩阵的C++程序
以下是使用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/fH5C 著作权归作者所有。请勿转载和采集!