我有一个信号,其光谱形状与二阶低通滤波器(巴特沃斯设计)的传递函数非常相似。

我想在时域中白化这个频谱的频谱。为此,我需要一个能够反转二阶低通滤波器效果的滤波器。
我可以通过交换 A 和 B 系数来计算二阶低通的逆滤波器,但这会将高频分量放大到无穷大。
如何设计具有二阶巴特沃斯设计的反传递函数但不会放大到无穷大的滤波器? 传递函数应具有相同的转角频率,但以每倍频程 12 dB 的速度平稳上升。
这甚至可能吗?有关如何设计这种过滤器的任何指示都会有所帮助!
我有一个信号,其光谱形状与二阶低通滤波器(巴特沃斯设计)的传递函数非常相似。

我想在时域中白化这个频谱的频谱。为此,我需要一个能够反转二阶低通滤波器效果的滤波器。
我可以通过交换 A 和 B 系数来计算二阶低通的逆滤波器,但这会将高频分量放大到无穷大。
如何设计具有二阶巴特沃斯设计的反传递函数但不会放大到无穷大的滤波器? 传递函数应具有相同的转角频率,但以每倍频程 12 dB 的速度平稳上升。
这甚至可能吗?有关如何设计这种过滤器的任何指示都会有所帮助!
最简单且可能是最好的方法是使用二阶 IIR 滤波器交换原始滤波器的分子和分母 - 正如您所建议的那样 - 但将双极点移至(奈奎斯特)略向,即稍微减小极点半径以使滤波器稳定。只需使用确切的值即可。该值越高,逆滤波器的近似值就越接近奈奎斯特。
这个小 Matlab/Octave 程序展示了如何做到这一点:
[b,a] = butter(2,.005); % some 2nd order Butterworth LP filter
r = 0.98; % desired pole radius < 1
b2 = a; % EQ numerator
a2 = [1,2*r,r*r]; % EQ denominator
k = sum(a2)/sum(b2);
b2 = k*b2; % scaling
[H1,w] = freqz(b,a,512); % Butterworth frequency response
H2 = freqz(b2,a2,512); % EQ frequency response
% plot EQ'd response
plot(w/pi,20*log10(abs(H1.*H2)))
grid on, xlabel('normalized frequency'),
ylabel('dB'), title('equalized response')

如果您使用的是 Matlab 或 Octave,请考虑尝试 firls。它允许您为滤波器指定幅度与频率的模板,您可以指定该模板以避免在高频下爆炸。