C 初始化GSL矩阵的元素

C 初始化GSL矩阵的元素,c,gsl,C,Gsl,我已经分配了一个大的gsl_矩阵,并希望用已知的浮点值分配它的所有元素。有没有一种方法可以不使用每个元素的gsl_矩阵_集来实现这一点?我正在寻找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

我已经分配了一个大的gsl_矩阵,并希望用已知的浮点值分配它的所有元素。有没有一种方法可以不使用每个元素的gsl_矩阵_集来实现这一点?我正在寻找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/) )

矩阵仅支持所有值的有限设置,即通过
gsl\u矩阵集\u all
gsl\u矩阵集\u set\u zero
gsl\u矩阵集\u identity

但是,您可以创建并初始化一个数组,然后使用
gsl\u matrix\u view\u array
gsl\u matrix\u const\u view\u array
gsl\u matrix\u view\u array\u with u tda
gsl\u matrix\u const\u view\u array\u with u tda
。(矩阵视图在GSL中很常见。例如,它们用于表示由
GSL\u Matrix\u submatrix
返回的子矩阵)矩阵视图是一个结构,其中包含一个字段
Matrix
,您可以在该字段上执行要应用的GSL\u矩阵方法

例如,使用
gcc matrixview.c-lgsl-lgslcblas
编译以下文件
matrixview.c

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

#define rows 2
#define cols 3

int main () {
    const double data[rows*cols] = { 
        0.0, 0.1, 0.2,
        1.0, 1.1, 1.2,
    };  
    const gsl_matrix_const_view mat = gsl_matrix_const_view_array( data, rows, cols );
    for ( size_t row = 0; row < rows; ++row ) { 
        for ( size_t col = 0; col < cols; ++col ) { 
            printf( "\t%3.1f", gsl_matrix_get( &mat.matrix, row, col ) );
        }
        printf( "\n" );
    }
}   
#包括
#包括
#定义第2行
#定义cols 3
int main(){
常量双数据[行*列]={
0.0, 0.1, 0.2,
1.0, 1.1, 1.2,
};  
常量gsl\u矩阵\u常量视图mat=gsl\u矩阵\u常量视图\u数组(数据、行、列);
对于(行大小=0;行<行;++行){
对于(size_t col=0;col