필터 지우기
필터 지우기

How can I inverse a digital low pass filter?

조회 수: 63 (최근 30일)
twig27
twig27 2017년 1월 4일
답변: Thierry Zerozerosept 2021년 7월 6일
Hello,
in Matlab it's easy to implement low pass filter. But how can I create another filter, which reverses the first filter, i.e. overall gain of 1 for all frequencies.
My idea is just to use the feedback function, i.e. put the low pass transfer function in the negative feedback. This means:
if true
num = 1;
den = [1/3000 1];
tf1 = tf(num,den);
bode(tf1)
tf_neg_feed = feedback(1,tf1);
bode(tf_neg_feed)
end
I would expect a frequency response of gain 1 up to a certain frequency, and a linear increase for higher frequencies. What I get however looks like this:
What is wrong with my approach? Thanks!

답변 (2개)

Jayaram Theegala
Jayaram Theegala 2017년 1월 9일
You can create the inverse of the original filter by exchanging the numerator and denominator of the filter transfer function, in other words:
if true
num = 1;
den = [1/3000 1];
tf1 = tf(num,den);
bode(tf1);
figure;
tf_inverse = tf(den,num);
bode(tf_inverse);
end
However, the inverse filter designed by the above approach may become unstable at higher frequencies. To design a inverse filter that is stable at higher frequencies you can refer to the following stackoverflow post:

Thierry Zerozerosept
Thierry Zerozerosept 2021년 7월 6일
Like already answered, many techniques are unstable.
What I do is making a pulse signal of the length of the filtered signal [1,0,0,0,0,0 ... ]
I pass it through the filter to have the impulse response of the filter.
I do a deconvolution of the signal with the impulse response of the filter like that: real(ifft(fft( signal )./fft( impulseresponse )))
This strongly amplifies the high frequency noise but it is not unstable.

카테고리

Help CenterFile Exchange에서 Matched Filter and Ambiguity Function에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by