私は2次元行列を持っています.この行列のすべての要素を次のようにトラバースしたい:
a =
0 1 2
5 4 3
6 7 8
for i = 1 : 81
a(i) = ....
....
今、たとえば を使用するa(2)
と、「5」が表示されましたが、 a(2)
「1」が必要です。つまり、列ではなく行トラバーサルで線形インデックスを使用したいのです。
配列を行ごとにトラバースするには、次のようなことを試してください。ここ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
Matlab は列優先であるため、線形インデックスは常に列を最初にトラバースします。ただし、行列を転置して列と行を逆にすることで、必要な効果を簡単に得ることができます。