1

私は2次元行列を持っています.この行列のすべての要素を次のようにトラバースしたい:

a = 
0  1  2
5  4  3
6  7  8

for i = 1 : 81
    a(i) = ....
....

今、たとえば を使用するa(2)と、「5」が表示されましたが、 a(2)「1」が必要です。つまり、列ではなく行トラバーサルで線形インデックスを使用したいのです。

4

2 に答える 2

2

配列を行ごとにトラバースするには、次のようなことを試してください。ここaにはcol_count列とrow_count行があります

for j = 1:col_count
   for i=1:row_count
       a(i,j)       %# display element at row i, column j
   end
end

これにより、最初の列から順番に要素が出力され、その列の各行の要素が行順に出力されます。これは、列ごとに繰り返されます。

edit :単一のインデックスを使用する必要がある場合は、現在の単一のインデックス表記を使用しますが、マトリックスの転置に基づいて操作します。

 b = a.'
 for i = 1:size
     b(i)     
 end
于 2012-08-26T12:41:51.537 に答える
1

Matlab は列優先であるため、線形インデックスは常に列を最初にトラバースします。ただし、行列を転置して列と行を逆にすることで、必要な効果を簡単に得ることができます。

于 2012-08-26T12:52:13.790 に答える