FFTの時に使う窓関数は以前自作する方法を紹介しましたが、一般的な窓関数はSciPyというパッケージに豊富にあります。今回はSciPyの窓関数の使い方を説明します。
こんにちは。wat(@watlablog)です。
SciPyはとても便利なパッケージのようです。今回はSciPyを使った窓関数のかけかたを習得していきます!
SciPyについて
SciPyとは?
SciPyとは高度な科学技術系の演算を行うためのライブラリパッケージであり、信号処理以外にも数値シミュレーションといった分野にも良く使われているみたいです。
SciPyのインストール
SciPyはこれまでと同様にpipでインストール可能です。pipについては以下の記事を参照して下さい。
Pythonのパッケージ管理ツール pipの使い方とコマンド集
インストール時のコマンドはこちらです。
1 |
python -m pip install scipy |
SciPyの窓関数を使ってみよう
窓関数をオーバーラップ波形にかける
以下の記事でFFTをする前の信号に対し、フレームをオーバーラップさせながらデータを抽出する所まで作成しました。
今回はこのオーバーラップ波形に対して窓関数をかけていきます。上の記事のコードにそのまま追加していきますので、それぞれの変数もそのまま引き継いでいます。
以下が窓関数を作成するコードです。
1 2 3 4 5 6 7 8 |
from scipy import signal #窓関数作成 han = signal.hann(Fs) #オーバーラップ波形に対しハニング窓をかける for k in range(N_ave): data_ol[k] = data_ol[k] * han |
実行結果
以下が実行結果です。オーバーラップ率は90%で設定していますので、波形は22個あります。
ハニング窓をかけたので、フレームの両端にいくにつれ滑らかに0になっていきます。
まとめ
今回はSciPyのパッケージを使ってハニング窓をかけてみました。
前回自作した窓関数に比べてコーディングは明らかに簡単であることがわかりました。
SciPyの窓関数が簡単過ぎて記事のボリュームも小さくなったぞ。
やはり既にパッケージ化された関数を使うのは効率が良いね!
Twitterでも関連情報をつぶやいているので、wat(@watlablog)のフォローお待ちしています!
はじめまして。あめすと申します。
クロネさんのリツイートから来ました。
いつかpythonを使えるようになりたいのでその際は参考にさせてもらいます。
ブログ更新頑張ってください。
コメントありがとうございます!はげみになります!クロネさんのブログは僕も大変参考にさせていただいています、リツイートで非常に大勢の方にブログを見て頂いているようで驚いています。
Python学習者にとって良いブログにしたいと思いますので、引き続きよろしくお願いします。