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