我有两个GSL矩阵,AT和A:
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矩阵:
gsl_matrix *ATA; /* coefficient matrix A'A */
ATA = gsl_matrix_alloc(nc, nc); /* Data matrix */ 我看到我可以使用gsl_blas_zgemm来乘复矩阵,但是这些矩阵并不是复杂的。我该怎么做?
更新
我试过:
gsl_blas_dgemm(CblasNoTrans, CblasNoTrans, 1.0, A, AT, 0.0, ATA); 它导致以下错误:
blas.c:1354: ERROR:无效长度默认调用的GSL错误处理程序。中止(核心倾弃)
发布于 2016-11-19 01:09:29
我在向后乘以矩阵。正确的路线是:
gsl_blas_dgemm(CblasNoTrans, CblasNoTrans, 1.0, AT, A, 0.0, ATA); https://stackoverflow.com/questions/40687568
复制相似问题