日記/2010-05-02/超てきとーなディジタルフィルタ設計
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
] [
リンク元
]
開始行:
* 超てきとーなディジタルフィルタ設計 [#ba56b7ba]
octave を使って超てきとーにディジタルフィルタを設計してみ...
** 仕様 [#md0ab691]
こんな感じのディジタルフィルタを設計してみる.
:種類|ローパスフィルタ
:ディジタルフィルタ形式|FIRフィルタ
:タップ数|32
:カットオフ周波数|サンプリング周波数の 1/4
** 理想の周波数特性を書く [#na6e49a5]
欲しい周波数特性を入力します.
エイリアジング成分も忘れないように.
octave:1> y = [ ones(1,8) zeros(1,17) ones(1,7) ];
octave:2> plot ( y );
#ref(spectrum_design.png,center)
** 逆 FFT にかける [#dcf0f5dd]
逆 FFT にかけます.
octave:3> h = ifft(y);
octave:4> plot(h);
#ref(iffted.png,center);
** 前半分と後ろ半分を入れ替える [#e35a4628]
逆 FFT の結果の前半分と後ろ半分を入れ替えると,インパルス...
octave:5> h = [ h(17:32) h(1:16) ];
octave:6> plot(h);
#ref(sinc.png,center)
** Blackman 窓をかける [#l8fa7b65]
このまま使うと,遮断域で,最初に指定したポイント以外の周...
今回は窓関数に Blackman 窓を使ってみます.
octave:7> hb = h .* blackman (columns(h))';
octave:8> plot(hb);
#ref(sinc_blackman.png,center)
タップ係数としてはこれで完成です.
** 設計したフィルタの周波数特性を見る [#y2e871eb]
理想特性を逆 FFT しただけのフィルタの場合,指定していない...
また,今回は窓関数を使用したので,窓関数の影響で最初に描...
というわけで,得られたタップ係数の周波数特性を詳細に見て...
まず,タップ係数 = インパルス応答の末尾に 0 を水増しして...
インパルス応答としては,末尾に 0 が付いても意味は一緒です...
octave:9> hb2 = [ hb zeros(1,1000) ];
octave:10> plot (hb2);
#ref(sinc_blackman_zeros.png,center)
FFT にかけます.
octave:11> y2 = fft(hb2);
octave:12> plot(log(abs(y2)/max(abs(y2))));
#ref(spectrum_designed.png,center)
最終的にはこんな感じの周波数特性になりました.
終了行:
* 超てきとーなディジタルフィルタ設計 [#ba56b7ba]
octave を使って超てきとーにディジタルフィルタを設計してみ...
** 仕様 [#md0ab691]
こんな感じのディジタルフィルタを設計してみる.
:種類|ローパスフィルタ
:ディジタルフィルタ形式|FIRフィルタ
:タップ数|32
:カットオフ周波数|サンプリング周波数の 1/4
** 理想の周波数特性を書く [#na6e49a5]
欲しい周波数特性を入力します.
エイリアジング成分も忘れないように.
octave:1> y = [ ones(1,8) zeros(1,17) ones(1,7) ];
octave:2> plot ( y );
#ref(spectrum_design.png,center)
** 逆 FFT にかける [#dcf0f5dd]
逆 FFT にかけます.
octave:3> h = ifft(y);
octave:4> plot(h);
#ref(iffted.png,center);
** 前半分と後ろ半分を入れ替える [#e35a4628]
逆 FFT の結果の前半分と後ろ半分を入れ替えると,インパルス...
octave:5> h = [ h(17:32) h(1:16) ];
octave:6> plot(h);
#ref(sinc.png,center)
** Blackman 窓をかける [#l8fa7b65]
このまま使うと,遮断域で,最初に指定したポイント以外の周...
今回は窓関数に Blackman 窓を使ってみます.
octave:7> hb = h .* blackman (columns(h))';
octave:8> plot(hb);
#ref(sinc_blackman.png,center)
タップ係数としてはこれで完成です.
** 設計したフィルタの周波数特性を見る [#y2e871eb]
理想特性を逆 FFT しただけのフィルタの場合,指定していない...
また,今回は窓関数を使用したので,窓関数の影響で最初に描...
というわけで,得られたタップ係数の周波数特性を詳細に見て...
まず,タップ係数 = インパルス応答の末尾に 0 を水増しして...
インパルス応答としては,末尾に 0 が付いても意味は一緒です...
octave:9> hb2 = [ hb zeros(1,1000) ];
octave:10> plot (hb2);
#ref(sinc_blackman_zeros.png,center)
FFT にかけます.
octave:11> y2 = fft(hb2);
octave:12> plot(log(abs(y2)/max(abs(y2))));
#ref(spectrum_designed.png,center)
最終的にはこんな感じの周波数特性になりました.
ページ名:
-->