【发布时间】:2013-05-15 18:50:23
【问题描述】:
谁能帮我弄清楚如何做这个操作。我正在查看文档,但自从我不得不做任何线性代数类型的东西以来,我有点迷茫了。
我有一个名为 Y 的 14x14 复数矩阵和一个名为 I 的复数向量。我需要将它们相乘并将结果设置为一个名为 IL 的复数向量。
到目前为止,我已经弄清楚我需要使用:
gsl_blas_zgemv (CBLAS_TRANSPOSE_t TransA, const gsl_complex alpha, const
gsl_matrix_complex * A, const gsl_vector_complex * x, const
gsl_complex beta, gsl_vector_complex * y)
但我不知道去哪里了。不知道去哪里。像这样的东西?但是什么是 alpha 和 beta?
gsl_blas_zgemv(CblasNoTrans, ???, &Y, &I, ???, IL);
【问题讨论】:
-
没有
CblasNOTrans的函数是 y := alphaAx + beta*y 所以我称之为gsl_blas_zgemv(CblasNoTrans, GSL_COMPLEX_ONE, &Y, &I, GSL_COMPLEX_ZERO, IL); -
我不确定你的意思。
-
哦。我懂了。但是什么是 GSL_COMPLEX_ONE 和 GSL_COMPLEX_ZERO?我需要定义这些吗?如果需要,如何定义?
-
gnu.org/software/gsl/manual/html_node/BLAS-Examples.html 有一个 double 的示例此外,如果您查看 BLAS netlib.org/blas/zgemv.f 的来源,您可以看到正在发生的事情。在你的情况下
IL = y、Y = A和I = x,你不想要IL = Y*I吗? GSL_COMPLEX_ONE 和 ZERO 在gsl_complex_math.h中定义。 -
没关系,我修好了。谢谢您的帮助。你是一个救生员!