*バンドパスフィルタをかける
butter関数を使用して各種バタワースフィルタを作成できる。標準の関数ではないので、事前にsignalパッケージをロードするコマンドの実行が必要:
pkg load signal次数10、低域カットオフ周波数 440 Hz 、高域カットオフ周波数 660 Hzのバンドパスフィルターを作成する例:
Fs = 44100; % sampling rate[b, a] に、伝達関数の係数が返される。
[b, a] = butter(10, [440 660]/(Fs/2));
500Hzの正弦波と800Hzの正弦波の合成波に、バンドパスフィルタをかける:
[y500, t] = gen_sin(Fs, 500); % sampling rate 44100Hz, sin 500Hz
[y800, t] = gen_sin(Fs, 800); % sampling rate 44100Hz, sin 800Hz
yy = y500 + y800;
sound(y500, Fs) % play sound
sound(y800, Fs) % play sound
sound(yy, Fs) % play sound
yy2=filter(b, a, yy);
sound(yy2, Fs) % play sound
合成波yyから800Hzの成分が除去されて、yy2には500Hzの成分だけ残る。
sound()コマンドでyy2を再生するとy500と似た再生音が聞こえる。
・・・となるはずだが、yy2が破裂音のような変な音になってしまう。
先日、同様の手順でうまくいったのだが要調査。
参考: バタワース フィルターの設計
0 件のコメント:
コメントを投稿