我正在使用GNU科学库,我想用值初始化一个矩阵,但是我不能理解没有循环的方法:
这有效:
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 :(得分: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;
}