2011-12-29 9 views
0

私はM * N個の要素を持つ配列Xを持っていますが、この同じデータでM×Nのサイズの行列Aを作成しようとしています。私は行列にgslを使用しており、Xは配列として宣言されています。私は問題を抱えていて、マトリックスに重なり合い続けています。ここでベクトルをC++の行列アルゴリズムに設定する

は私がしようとしているものの例である:

Vector X[4*2] 
1,2,3,4,5,6,7,8 

Matrix A 4X2 
1, 2 
3, 4 
5, 6 
7, 8 

//heres one of my many fail attempts as an example 
//creation of array X here 
X[n*m] = someCbasedformulafromtheweb(n, m); 
//gsl matrix allocation for matrix A N x M 
gsl_matrix * A = gsl_matrix_alloc(n, m); 
for(int i=0; i<n; i++) { 
    for(int j=0; j<m; j++) { 
     // setting the x[i*j] entry to gsl_matrix A at positions i , j 
     gsl_matrix_set (A,i,j, x[i*j]); 
    } 
} 
+0

あなたが見ることができます私たちはあなたが試したこと、なぜそれがうまくいかなかったのか、私たちは出発点を持っていますか? – Dan

+0

今すぐ確かに編集してください – pyCthon

答えて

2

私はと遊ぶのがGSLを持っていないが、この作品ではないでしょうか?

for (i=0 ; i<4 ; ++i) 
    for (j=0 ; j<2 ; ++j) 
    X[2*i + j] = gsl_matrix_get (&A, i, j)); 
+0

ありがとうございました – pyCthon

1

あなたの問題は、このラインである:ここでは

gsl_matrix_set (A,i,j, x[i*j]); 

は、物事の表です:

i | j | x[i*j] 
0 | 0 | x[0] 
0 | 1 | x[0] 
1 | 0 | x[0] 
1 | 1 | x[1] 
2 | 0 | x[0] 
2 | 1 | x[2] 
3 | 0 | x[0] 
3 | 1 | x[3] 

は、代わりにあなたが使用する必要があります。

gsl_matrix_set (A,i,j, x[2*i+j]); 

i | j | x[2*i+j] 
0 | 0 | x[0] 
0 | 1 | x[1] 
1 | 0 | x[2] 
1 | 1 | x[3] 
2 | 0 | x[4] 
2 | 1 | x[5] 
3 | 0 | x[6] 
3 | 1 | x[7] 
関連する問題