matlab
1>> g=zeros(1,1000); 2>> g(1:3)=[1 1 1]; 3>> fx=fft(g); 4>> plot(20.*log10(abs(fx(1:500)))) 5
このように入力するとg=[1 1 1]のz変換が求められるのですが,なぜこのように
g=zeros(1,1000);
g(1:3)=[1 1 1];
とセットしないと正しい周波数分解能が得られないのですか?
あとこれがその時に出力されたfftのグラフになるのですが,たとえばg=[1 1]であればゼロ点がz=-1でω=πのとことで応答が0になり,fs/2のところにディップが来ると思うのですが,2次の場合,z=(-1+√3i)/2,(-1-√3i)/2となるのですが,このようなグラフになる意味が理解できません.(-1+√3i)/2のゼロ点は340Hzのディップを表しているのではないかと思っているのですが,そこからどのように考えれば(-1-√3i)/2のゼロ点の位置がこのようになることを理解できますか.
質問がわかりにくいと思うので,追加すると半径1の1の単位円で考えた時にg=[1 1]でz=-1の時は単位円上に存在するのでfs/2のところにディップが来て,2枚目のグラフのように横軸の500Hzで0になっているのですが,2次になるとz=(-1+√3i)/2,(-1-√3i)/2でなぜこのようなグラフになるのか理解できません.z=(-1+√3i)/2,(-1-√3i)/2の点は単位円上にないからディップが下がりきらないのでしょうか.
また左が元の入力信号で右が得られたg=[1 1 1]のz変換を元の入力信号と畳み込んで,fftしたグラフなのです.
g=[1 1 1]のz変換はLPFのように感じるのですが,低域が逆に下がっています.なぜかよくわかりません.
よろしくお願いいたします.