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