1

matlab で配列のいくつかの要素にアクセスしようとしています。以下のシナリオを検討してください。

a = [1 2 3;4 5 6;7 8 9]

b = [1 2;2 1]

a からインデックス (1,2) と (2,1) を持つ要素にアクセスしたい。a(b) などを使用してみましたが、試した方法はどれもうまくいきませんでした。

ループを使用せずに matlab でこれを行うにはどうすればよいですか?

また、このような matlab の基礎に関する良い本をいくつか提案していただけると助かります。

4

2 に答える 2

1

まず、以下を使用して添え字をインデックスに変換しますsub2ind

dim1sub = b(:,1);
dim2sub = b(:,2);

ind = sub2ind(size(a), dim1sub, dim2sub)

インデックスを取得したら

a(ind)

あなたに与える:

ans =

     2
     4

マトリックス インデックスの詳細については、こちらを参照してください。

于 2013-01-24T15:46:53.497 に答える
0

Matlab を使用すると、行列のすべての列をスキャンする線形インデックスを使用して行列にアクセスできます。したがって、あなたの場合(3x3の場合)a(2,1)=a(2)a(1,2)=a(4). @HebeleHododo が提供した回答は、行と列のインデックスを取得し、それらを線形インデックスに変換して matrix に変換しますa。異なるサイズの行列にインデックスを付けたい場合は、別の線形インデックスが必要になることに注意してください。

また、matlab の学習に役立つオンラインで入手できる多くの情報がありますdoc help

于 2013-01-24T16:42:22.097 に答える