gsl_matrix的初始化

initialization of a gsl_matrix

本文关键字:初始化 matrix gsl      更新时间:2023-10-16

>我正在使用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

有没有办法做到这一点?

您可以使用

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 %fn%f %fn", 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;
}