Octaveで Signal Processing
1.とっても楽しい Octaveで,Signal Processing
下のグラフは、 freqz([0.5 0.5]) の、実行結果です。(firフィルタ、係数は [0.5 0.5] )
いきなり、グラフが、出てきます。
freqzの定義は、help freqz で、見ることが出来ます。
ですので、IIR filterの、グラフも、見ることが出来ます。(Aが省略されると、fir filterに、なる。伝達関数の分母が1だから、fir)
FS (Sampling Freq.) まで、省略せずに書くと、周波数目盛りも、直接に、周波数で、見ることができます。
Sampling freq. 10KHzで 100tapsのfir filterの特性を、みてみましょう。
freqz(fir1(99,0.4),1,512,"half",10000)
を、実行します。
octave:13> x=floor(fir1(99,0.4)*2^14);
とすると、Hamming窓(変更可能)での、100taps、stopband 2KHzの fir filterの係数を得ることが、できます。
もちろん、saveすることが、できます。
ここでの、注意点は、Linux上で、freqzを実行 freqz([0.5 0.5]) すると、エラーになってしまうことです。
そんで、ちょっと、freqz.mを、modify。(青い部分)
これで、うまく働きます。
2.Sinc関数も、やってみます!
octave:19> x=-10:0.1:10;
octave:20> y=sinc(x);
octave:21> plot(x,y)
これの、周波数領域を、観察しましょう。
octave:19> x=-10:0.1:10;
octave:20> y=sinc(x);
octave:21> plot(x,y)
octave:22>
octave:22> z=fft(y,1024);
octave:23> semilogy(abs(z))
semilogy((abs(z(1:256))))
で、拡大すると、
では、反対に、この周波数特性を、逆FFTしてみます。
octave:31> u=ifft(z);
octave:32> plot(real(u))
当たり前ですが、元のsinc関数が、再現されます !
しかし、私には、大きな喜びです、グラフで、見れるって、すんばらしいですね。
その他、octave-forgeには、魅力的な、関数が、いっぱいあります!
下のグラフは、ellipdemo.mを、実行したものです。
いやあ、素晴らしいですね。
「シミュレーションで学ぶディジタル信号処理 尾知先生 CQ出版」も、今んところ、離れられません。
なんでか、言うと、気になる文章が、いっぱいなんです。
「....両者ともに同じ差分方程式であるが、どちらの回路の処理スピードが速いのだろうか?
答えは、図(b)の回路のほうが格段に図(a)の回路より速い。その理由は、本章を読み進んでいくことで、次第に
明らかになる。....」 (同書 第7章 p.106)
H18.5.12