2015-06-10 30 views
0

我使用GNU科学图书馆,我要初始化值的矩阵,但我不明白如何在不循环做:初始化gsl_matrix的

这工作:

gsl_matrix * m = gsl_matrix_alloc (3, 3); 

    for (int i = 0; i < 3; i++) 
    for (int j = 0; j < 3; j++) 
     gsl_matrix_set (m, i, j, 100*i + j); 

但我愿做这样的事情:

double data[] = { i , 1/2.0, 1/3.0, 
         1/2.0, 1/3.0, 1/4.0, 
         1/3.0, 1/4.0, 1/5.0}; 

    gsl_matrix mat = gsl_matrix_from_array(data); // does not exists 

有没有办法做到那?

回答

0

您可以使用std::copy()来做到这一点。

#include <iostream> 
#include <gsl/gsl_matrix.h> 

using namespace std; 

int main(void){ 

    double data[] = {1,2,3,4}; 
    gsl_matrix *m = gsl_matrix_alloc(2,2); 
    copy(data, data+4, m->data); 

    printf("Matrix:\n%f %f\n%f %f\n", gsl_matrix_get(m, 0, 0), gsl_matrix_get(m, 0, 1), 
     gsl_matrix_get(m, 1, 0), gsl_matrix_get(m, 1, 1)); 
    return 0; 
}