retrieving the impulse response of a function using freqz (not impz)

36 ビュー (過去 30 日間)
Riven Yvet
Riven Yvet 2016 年 12 月 2 日
回答済み: Daniel kiracofe 2016 年 12 月 3 日
Can anyone help me retrieve the impulse response of a filter by USING freqz command and NOT impz command? I know that when you use freqz, its answer will be the H(W). So by using IDFT on H(W) I can retrieve h(n). But how do you do that?
Example I want 100 samples of the impulse response of the filter described by the lccde y(n)-3y(n-1) = x(n). I would input [H,~] = freqz(1,[1 -3],100,'whole'). From here, H output is H(w) right? So I would use [Y] = ifft(H',100) function to inverse fourier the H(w) to h(n) using 100 samples to obtain 100 samples. But checking the answer using [i,~] = impz(1,[1 -3],100) would net a very FAR result. Please help me, this would really help me pass my subject in college.

回答 (1 件)

Daniel kiracofe
Daniel kiracofe 2016 年 12 月 3 日
I suspect your problem is that the system you are trying to study is unstable. i.e. the pole lies outside the unit circle, so the impulse response grows exponentially without bound. I think if you tried something like [H,~] = freqz(1,[1 -0.3],100,'whole') instead, which is a stable system, you would find that it would match better with impz. This page might help explain it a little better.
Also I don't think you need the transpose. ifft(H,100) should be good.


Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by