我正在研究c ++中与矩阵相关的一些问题。我想解决这个问题:Y = aX + Y,其中X和Y是矩阵,a是常数。我想过使用daxpy BLAS例程,但是,DAXPY根据文档是一个向量例程,我得到的结果与在matlab中解决相同问题的结果不一样。
我目前正在运行:
F77NAME(daxpy)(N, a, X, 1, Y, 1);
答案 0 :(得分:1)
当您需要执行操作Y=a*X+Y
时,X',
Y`是1D还是2D矩阵并不重要,因为操作是按元素完成的。
所以,如果你用单指针double A[] = new[] (M*N);
分配矩阵,那么你可以通过将向量的维度定义为daxpy
M*N
int MN = M*N;
int one = 1;
F77NAME(daxpy)(&MN, &a, &X, &one, &Y, &one);
与堆栈二维矩阵double A[3][2];
相同,因为此内存按顺序分配。
否则,您需要使用for
循环并分别添加每一行。