ディジタル・フィルタについては
様々なWebサイトや文献に詳しいので
Wave信号への利用を試みて見ます。
巡回形ディジタルフィルタ
IIR(Infinite Impulse Response Digital Filter)と
非巡回形ディジタルフィルタ
FIR(Finite Impulse Response Digital Filter)などがありますが
今回は FIRを取り上げています。
Javaアプレット(Java Digital Filter(JDF))で 「ウェーヴレット序奏 (Wavelet Introduction)」の Wave信号を見てみます。
(Java appletは 利用出来なくなりました;)
(※改訂履歴:
v0.6.4['14/10/25] [Calc.][ON/OFF]ボタンを無くしました。
FFTのサンプル数とFilterの段数の選択位置を交換しました。
v0.6.3['14/10/18] HTML5版を追加しました。
HTML5版です。
v0.6.2['12/12/08] cssファイルを別にしました。
v0.6.1['12/11/11]
ReadWave.javaのmonoとStereoの切替えの不具合を訂正しました。
v0.6['10/11/20] [FFT]表示を追加して
ボタン位置などを移動しました。
v0.5['08/11/25] 周波数表示などを訂正しました。
v0.4.1['07/11/29] ReadWave.java(v0.2)に修正しました。
v0.4['07/08/31] フィルタ部分を別クラス
(FilterFIR.java)にしました。
v0.3['05/09/10] Waveファイルの読み込み(クラス)を別にしました。
v0.2['04/02/21] S・M・LでJava画面のサイズを変更出来るように
なりました。
v0.1['03/02/23])
画面左:[ Wave ] では Wave信号を表します。 (再度のクリックで 時間[sec]とレベル[%]の表示/非表示を切替えます。)
[ FFT ] FFTのスペクトルを表示します。
[(※)Filter FIR ]
では縦の白線のカーソルで周波数を決めます。
(マウスのクリック)から
[Calc.]ボタンでフィルタのデザイン(設計)を行います。
[Filter][F.FFT]に切替える事で自動的に再計算が行われます。
緑色の線は設計されたフィルタの
振幅特性を表します。
青色の水平線は利得(減衰量)を
画面左のマゼンタ色の
デシベル値 [dB]で表します。
画面下は周波数を表しています。
画面右上には[Calc.]で
カーソル位置の周波数が表示されます。
([BPF][BEF] 時は Lowと
High二つの周波数が表示されます)
無くしました。
[ IRes. ] (以前の「H(z)」) 設計したフィルタのインパルス応答(Impulse Response)(次数) を表示します。
(※)[ Filter ] フィルターを通ったWave信号です。
(※)[ F.FFT ] フィルターを通ったWave信号をFFTで見てみます。
画面上段上: [ 44100[Hz] Size:74617 ]
Waveデータのサンプリング周波数とデータ数を表示します。
[FIR]時にはカーソル位置の周波数を表示します。
[ 744[Hz]:-5.19 ]
カーソル位置のデータなどを表示します。
[Filter] では 周波数[Hz] と減衰量[dB]です。
[IRes.] では フィルタ次数の番号と値です。
無くしました。
[ sweep.wav ]:Waveファイルを選択します。
(切替えと同時にフィルタ処理も行いますので
時間がかかる場合もあります)
[ 11 ]:[FFT]の サンプル数を選択します。 (8:256 9:512 10:1024 11:2048 12:4096 13:8192 14:16384)
画面上段下「LPF . HPF . BPF . BEF」: [Filter]で設計する種類を選びます。
「 ON / OFF 」: [Wave] 表示でフィルタ処理前 [OFF]・ フィルタ処理後 [ON]を切替えます。無くしました。
「 Calc. 」: [Filter] 表示で 縦白線カーソルで周波数を変更した後に フィルタの次数を再計算する場合に使用します。 無くしました。
「 Hamming 」:[Filter]での 窓関数(Window)の選択を行います。
[ 64 ]:フィルタの段数を選択します。 (16 - 32 - 64 - 128)
画面右「+ | -」:表示されている信号を増減します。
「> | <」: [Wave]表示で信号の表示幅を増減します。 [FFT]では 周波数幅を増減します。
画面下 スライドバー: [Wave]表示で信号の位置を移動します。 スライダーの幅が現在表示されているWaveデータの量を表します。
[Filter]では 1[Hz]単位での周波数設定は出来ず サンプリング周波数によって 44100[Hz]では 55[Hz] 11025[Hz]では 14[Hz]ぐらいとなります。
[Filter]の [BPF][BEF]では縦白線のカーソルが 2本現れますが
マウスカーソルの近い方が有効になります。
クリックで縦白線カーソルは停止し
再クリックでマウスカーソルに合わせて動き出します。
新 Sweep信号(サンプリング周波数 11025[Hz]・1[sec]・ 約10〜4200[Hz])でディジタル・フィルタの動作を確認します。
FFTの図では段階的な変化のようにも見えますが
Waveletの図で連続的な変化と確認出来ます。
FFT :
Wavelet(CWT)
それを 1[KHz]を中心に 約±250[Hz]の BPFで処理を行います。
BPF :
Wave
[ 5.Sine wave & pules ]を LPF・HPFなどで 信号が分離されるのを 確認して見て下さい。
これまでのWave信号を "Java Digital Filter(JDF)"などで見てみます。
View Wave Files