Matlab: find 関数
informatics/commands_matlab/find_matlab
7-31-2017 updated
- 概要: find 関数とは
- find を使って、行列の特定の値を置換
広告
概要: find 関数とは
MATLAB の find は、それ自身の形が表に出てこないので、少しイメージしにくい関数かもしれない。実例でみてみよう。
a =
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
>> apos=find(a==19);
b =
0.9955 0.3521 0.8951 0.9502 0.1747
0.6209 0.8222 0.6915 0.0704 0.9550
0.6636 0.4841 0.8390 0.7800 0.9177
0.9270 0.9317 0.0023 0.8174 0.8730
0.7535 0.1918 0.2318 0.8636 0.4841
>> c=b(apos)
c = 0.0023
find を使って、行列の特定の値を置換する
これも、実例を見るのがわかりやすいだろう (1)。
x =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
>> xpos=find(x>10)
xpos =
1
6
8
12
13
15
% find の中身は、このように位置を示す数字になっている。
>> x(xpos)=0
x =
0 2 3 0
5 0 10 8
9 7 6 0
4 0 0 1
これは、find が位置を示すという点で以下の 2 例と共通するところがある。
>> x(1,2)=0
x =
0 0 3 0
5 0 10 8
9 7 6 0
4 0 0 1
>> x(:,:)=0
x =
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
なお、このような置換は実は find を使わなくても可能で、単に >> x(x>10)=0 とすれば OK である (1)。計算時間も短縮することができるが、多次元の配列を扱う場合は、find で位置情報を保存しておいた方が何かと便利なときもある。
コメント欄
フォーラムを作ったので、各ページにあるコメント欄のうち、コメントがついていないものは順次消していきます。今後はフォーラムをご利用下さい。管理人に直接質問したい場合は、下のバナーからブログへ移動してコメントをお願いします。
|
|
References
- 文六メモ matlab: find いらずの一発参照・代入. Link.