首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于GSL的矩阵乘法

基于GSL的矩阵乘法
EN

Stack Overflow用户
提问于 2016-11-18 23:38:52
回答 1查看 5.2K关注 0票数 3

我有两个GSL矩阵,ATA

代码语言:javascript
复制
gsl_matrix *A;    /* coefficient matrix A     */
gsl_matrix *AT;   /* coefficient matrix A'    */

AT   = gsl_matrix_alloc(nc, nr); /* Data matrix */
A    = gsl_matrix_alloc(nr, nc); /* Data matrix */

/* Initialize A */
for(i = 0; i < nr; i++){
  gsl_matrix_set(A, i, 0, 1.0); 
}

for(i = 0; i < nr; i++){
  for(j = 1; j < nc; j++){
    gsl_matrix_set(A, i, j, 1.0 / (double)(i + j + 1)); 
  }
}

gsl_matrix_transpose_memcpy(AT, A); 

我想乘这些矩阵并将结果存储在矩阵ATA中,但是我很难理解GSL文档。

我已经初始化了ATA矩阵:

代码语言:javascript
复制
gsl_matrix *ATA;  /* coefficient matrix A'A   */
ATA  = gsl_matrix_alloc(nc, nc); /* Data matrix */  

我看到我可以使用gsl_blas_zgemm来乘复矩阵,但是这些矩阵并不是复杂的。我该怎么做?

更新

我试过:

代码语言:javascript
复制
gsl_blas_dgemm(CblasNoTrans, CblasNoTrans, 1.0, A, AT, 0.0, ATA); 

它导致以下错误:

blas.c:1354: ERROR:无效长度默认调用的GSL错误处理程序。中止(核心倾弃)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-19 01:09:29

我在向后乘以矩阵。正确的路线是:

代码语言:javascript
复制
gsl_blas_dgemm(CblasNoTrans, CblasNoTrans, 1.0, AT, A, 0.0, ATA); 
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40687568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档