2016-09-03 4 views
0

私は次の行列があります。値の正確性を維持しながら、行列の次元を逆にする(お互いに)?

const double values[3][41] = { { -116.99, -116.99, -116.99, -116.99, -116.99, 
     -116.99, -116.99, -116.99, -116.99, -116.99, -116.99, -116.99, -116.99, 
     -116.99, -116.99, -116.99, -116.99, -116.99, -116.99, -72.385, -60.657, 
     -72.385, -116.99, -116.99, -116.99, -116.99, -116.99, -116.99, -116.99, 
     -116.99, -116.99, -116.99, -116.99, -116.99, -116.99, -116.99, -116.99, 
     -116.99, -116.99, -116.99, -116.99 }, { -116.99, -116.99, -116.99, 
     -116.99, -116.99, -116.99, -116.99, -116.99, -116.99, -116.99, -116.99, 
     -116.99, -116.99, -116.99, -116.99, -116.99, -116.99, -97.597, -81.568, 
     -74.745, -66.323, -74.745, -81.568, -97.597, -116.99, -116.99, -116.99, 
     -116.99, -116.99, -116.99, -116.99, -116.99, -116.99, -116.99, -116.99, 
     -116.99, -116.99, -116.99, -116.99, -116.99, -116.99 }, 
     { -116.99, -116.99, -116.99, -116.99, -116.99, -116.99, -116.99, 
       -116.99, -116.99, -116.99, -116.99, -116.99, -116.99, -116.99, 
       -116.99, -107.26, -97.836, -89.451, -83.642, -78.459, -71.99, 
       -78.459, -83.642, -89.451, -97.836, -107.26, -116.99, -116.99, 
       -116.99, -116.99, -116.99, -116.99, -116.99, -116.99, -116.99, 
       -116.99, -116.99, -116.99, -116.99, -116.99, -116.99 }} 

は、これらの代わりに[y][x]として出力を書いたデバイスからの値ですvalues[3][41]にそれを変換する簡単な方法があります[x][y]です。行列から値を呼び出すためのラップされた関数を書いていますが、おそらく軸を逆転させる方法があります。

+0

このような方法はありません。あなたのアプローチは正しいものです(マトリックスを「物理的に変換する」を除いて) – Serge

+0

おそらくhttp://stackoverflow.com/questions/16737298/what-is-the-fastest-way-to-transpose-a-matrix-in- cラッパー関数は、データを移動する必要がないため、うまく聞こえます。 – robor78

+0

デバイスから実際の配列に値がどのように書き込まれたかを示す必要があります。 – maja

答えて

0

あなたはそれをループする必要があります。

const double values[3][41] = {...}; 
double newValues[41][3]; 

for(int i=0; i<3; ++i) { 
    for(int j=0; j<41; ++i) { 
     newValues[j][i] = values[i][j]; 
    } 
} 

しかし、これは二倍のメモリ空間を必要とします。また、メモリ内でそれを並べ替えることも可能です。

関連する問題