How can I inverse a digital low pass filter?
63 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/159444/image.jpeg)
What is wrong with my approach? Thanks!
0 Kommentare
Antworten (2)
Jayaram Theegala
am 9 Jan. 2017
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:
0 Kommentare
Thierry Zerozerosept
am 6 Jul. 2021
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.
0 Kommentare
Siehe auch
Kategorien
Mehr zu Matched Filter and Ambiguity Function finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!