バックナンバーはこちら。
https://www.simulationroom999.com/blog/compare-matlabpythonscilabjulia3-backnumber/
はじめに
非極大値抑制をプログラムを作成しているときに出てきた、
線形インデックスサーチと論理インデックスサーチについて説明。
登場人物
博識フクロウのフクさん

イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん

イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
インデックスサーチとは?

非極大値抑制のプログラムを作成した時に
線形インデックスサーチと論理インデックスサーチについて説明するようなこと言ってたけど、
早速やる感じ?

そうだね。
忘れないうちにやってしまおう。

そもそもとして、インデックスサーチというのがわからんのだけど・・・。

まぁ端的に言うとベクトル、行列の特定の要素の抜き出しだな。

配列で言うと、添え字指定みたいなやつ?

そうそう。
ただし、一般的な配列の添え字と異なる点もある。

そ、それは?

一気に複数の添え字を指定できる。

複数の添え字?
イメージ沸かんな・・・。
MATLABで線形インデックスサーチ

まぁ、実際に見せた方が良いだろう。
まず、11~19の9要素の値を並べて、行列に形状を変える。
>> A=[11:19]
A =
11 12 13 14 15 16 17 18 19
>> A=reshape(A,3,3)
A =
11 14 17
12 15 18
13 16 19

ここに対してインデックスサーチを掛けるってことか。

通常、以下の感じで各要素にアクセスができる。
>> A(1,1)
ans =
11

まぁ、普通の使い方だね。

これの添え字をベクトルにする。

は?
>> A([1,2],1)
ans =
11
12

あ、一行目と二行目の値も取れる感じか。
もうちょい複雑は線形インデックスサーチ

もっといろいろできる。
>> A([1,2],:)
ans =
11 14 17
12 15 18
>> A([1,3],[2,3])
ans =
14 17
16 19

なるほど。
添え字指定がベクトルにできると、こういった抜き出しもできるのか。

ちなみに、今回は読み出しだけだったけど、書き込みにも使える。
実際、前回の非極大値抑制の時は行列への書き込みにインデックスサーチを使用した。
まとめ

まとめだよ。
- MATLABで線形インデックスサーチを実施。
- 基本的な考え方は配列の添え字指定のベクトル化。
- 様々な指定方法で行列内部データの参照、書き込みが可能となる。
バックナンバーはこちら。
コメント