我已经分配了一个大的gsl_matrix,并希望用已知的浮点值分配它的所有元素。有没有办法在不为每个元素使用gsl_matrix_set的情况下执行此操作?我正在寻找相当于fortran的重塑函数来初始化矩阵。
A = reshape( (/0, 1, 2, 3, 4, 5, 6, 7,
0, 1, 2, 3, 4, 5, 6, 7,
0, 1, 2, 3, 4, 5, 6, 7,
0, 1, 2, 3, 4, 5, 6, 7,
0, 1, 2, 3, 4, 5, 6, 7,
0, 1, 2, 3, 4, 5, 6, 7,
0, 1, 2, 3, 4, 5, 6, 7,
0, 1, 2, 3, 4, 5, 6, 7/), (/ 8, 8/) )
答案 0 :(得分:2)
矩阵仅支持所有值的有限设置,即gsl_matrix_set_all
,gsl_matrix_set_zero
或gsl_matrix_set_identity
。
但是,您可以创建并初始化数组,然后使用gsl_matrix_view_array
,gsl_matrix_const_view_array
,gsl_matrix_view_array_with_tda
或{{1}创建矩阵视图 }。 (矩阵视图在GSL中很常见。例如,它们用于表示由gsl_matrix_const_view_array_with_tda
返回的子矩阵。)矩阵视图是一个结构,其中包含一个字段gsl_matrix_submatrix
,您可以在该字段上执行gsl_matrix方法你想申请。
例如,使用matrix
编译以下文件gcc matrixview.c -lgsl -lgslcblas
:
matrixview.c