我使用cblass_dgemm将两个矩阵相乘
它被认为是计算B= A‘x A;
row_train = 10304, col_train = 5;
gsl_matrix *mean_centred_train = gsl_matrix_alloc(row_train, col_train);
gsl_matrix * image_for_eigen = gsl_matrix_alloc(col_train, col_train);我是这么称呼它的:
cblas_dgemm(CblasRowMajor, CblasTrans, CblasNoTrans, mean_centred_train->size1, mean_centred_train->size2, mean_centred_train->size2, 1, mean_centred_train->data, mean_centred_train->size1, mean_centred_train->data, mean_centred_train->size1, 1, image_for_eigen->data, image_for_eigen->size1);当我运行程序时,我得到了一个分割错误,并且我非常确定矩阵的大小是正确的。
发布于 2013-11-26 19:08:04
应该是这样的。
cblas_dgemm(CblasRowMajor, CblasTrans, CblasNoTrans,
image_for_eigen->size1, //m
image_for_eigen ->size2, //n
mean_centred_train->size1, //k
1.0, //alpha
mean_centred_train->data, mean_centred_train->size1,
mean_centred_train->data, mean_centred_train->size1,
0.0, //beta
image_for_eigen->data, image_for_eigen->size1);[m, n]是结果矩阵的大小,无论输入矩阵是否转置。另外,如果你想要B=A'*A,beta应该是0.0。
https://stackoverflow.com/questions/19989228
复制相似问题