バックナンバーはこちら。
https://www.simulationroom999.com/blog/stock-predict-matlabpython-backnumber/
はじめに
前回は、MATLABで超簡易バンドパスフィルタ実施した。
想定通りの3Hzだけの抽出はできたが、3[Hz]と-3[Hz]以外を0にしてる部分のコードが妙。
ここは論理インデックス検索という手法を使っている。
よって、今回はこれら評価式を使った検索手法について説明。
登場人物
博識フクロウのフクさん
イラスト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
論理インデックス検索と線形インデックス検索
で、今回は「論理インデックス検索」ってのを説明してくれるんだっけか?
それに加えて「線形インデックス検索」ってのも説明するつもりだ。
また、余計なものが増えた・・・。
折角だから覚えておきなって。
便利だし、使い方自体はそっくりだから。
まぁ似てるんだったらついでに覚えてしまった方が良いか・・・。
論理インデックス検索と線形インデックス検索の実施コードとその結果
これはもうコードとその結果を見た方が早いだろう。
% 数列生成
>> A=[11:19]
A =
11 12 13 14 15 16 17 18 19
% 3x3の正方行列化
>> A=reshape(A,3,3)
A =
11 14 17
12 15 18
13 16 19
% 線形インデックス検索
>> A([1 4 5])
ans =
11 14 15
% 論理インデックス作成
>> B=11<A & A<16
B =
0 1 0
1 1 0
1 0 0
% 論理インデックス検索
>> A(B)
ans =
12
13
14
15
% 論理インデックス検索
>> A([false true false;false true false; false true false])
ans =
14
15
16
ほう!
こんなことが可能なのか!
線形インデックス検索の方はC言語の配列に対する添え字と考え方は一緒だ。
ただ、C言語の添え字は1個だけど、いわゆるスカラーだけしか設定できないのに対し、
MATLABではスカラー以外にベクトルも添え字として設定できるってイメージだな。
論理インデックス検索は、1かtrueのところだけを抜き出してくれるって感じだね。
そして、これらの検索は読み出しだけでなく、書き込みもできる。
この書き込みができることを利用したのが前回のコードのこれになる。
Fw_Filter( k< -High | (-Low < k & k <= 0) | (0 <= k & k < Low) | High < k)=0;
最初は何事かと思ったけど、分かってしまえば確かに便利機能だ。
ちなみにPythonも同じことできるの?
ふむ。
じゃー、次回はPython側に於ける線形インデックス検索、論理インデックス検索の話としよう。
まとめ
まとめだよ。
- MATLABのインデックス検索には線形インデックス検索と論理インデックス検索がある。
- 線形インデックス検索はC言語の配列の添え字の考え方と一緒だが、添え字に設定できる値がベクトルにできる。
- C言語はスカラーのみ。
- 論理インデックス検索は渡すベクトルの1かtrueのところだけが参照できる。
- それぞれ書き換えも可能。
バックナンバーはこちら。
コメント