2016-11-18 9 views
1

사용 :행렬 곱셈 내가 두 GSL 행렬, <code>AT</code> 및 <code>A</code>이 GSL

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 BLAS 문서를 이해하는 데 .

나는 ATA 행렬을 초기화 한 :

gsl_matrix *ATA; /* coefficient matrix A'A */ 
ATA = gsl_matrix_alloc(nc, nc); /* Data matrix */ 

나는 복잡한 매트릭스를 곱 gsl_blas_zgemm를 사용할 수있는 참조하지만, 이러한 행렬은 복잡하지 않습니다. 나는 이것에 대해 어떻게 갈 것인가?

내가 시도

UPDATE : 그것은 다음과 같은 오류의 원인

gsl_blas_dgemm(CblasNoTrans, CblasNoTrans, 1.0, A, AT, 0.0, ATA); 

:

gsl: blas.c:1354: ERROR: invalid length Default GSL error handler invoked. Aborted (core dumped)

답변

1

내가 뒤로 행렬을 곱했다. 적절한 행 :

gsl_blas_dgemm(CblasNoTrans, CblasNoTrans, 1.0, AT, A, 0.0, ATA);