gpt4 book ai didi

c - 使用 GNU Blas 子程序在 vector 和矩阵之间进行元素乘积

转载 作者:太空宇宙 更新时间:2023-11-04 08:12:20 24 4
gpt4 key购买 nike

我正在研究 C,使用 GNU 库进行科学计算。本质上,我需要执行与以下 MATLAB 代码等效的操作:

x=x.*(A*x);

其中 x 是一个 gsl_vector,A 是一个 gsl_matrix。

我设法使用以下命令执行 (A*x):

gsl_blas_dgemv(CblasNoTrans, 1.0, A, x, 1.0, res);

其中 res 是另一个 gsl_vector,它存储结果。如果矩阵 A 的大小为 m * m, vector x 的大小为 m * 1,则 vector res 的大小为 m * 1。

现在,剩下要做的是 vector x 和 res 的元素乘积(结果应该是一个 vector )。不幸的是,我一直坚持这一点,找不到执行该操作的功能。

如果有人可以帮助我,我将不胜感激。此外,有谁知道是否有比 https://www.gnu.org/software/gsl/manual/html_node/GSL-BLAS-Interface.html#GSL-BLAS-Interface 更好的 GNU 文档?到目前为止,这让我感到困惑。

最后,如果我通过简单地使用 for 循环执行此步骤( vector 的大小约为 11000,并且此步骤将重复 500-5000 次),我会失去时间性能吗?

for (i = 0; i < m; i++)
gsl_vector_set(res, i, gsl_vector_get(x, i) * gsl_vector_get(res, i));

谢谢!

最佳答案

你想要的功能是:

gsl_vector_mul(res, x)

我使用过 Intel 的 MKL,我喜欢他们网站上有关这些 BLAS 例程的文档。

关于c - 使用 GNU Blas 子程序在 vector 和矩阵之间进行元素乘积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38377929/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com