从输入和输出信号获得频率响应

信息处理 频率响应 有限脉冲响应
2022-02-11 06:16:54

给定输入信号和滤波器输出的信号,如何获得滤波器的频率响应?

3个回答

您正在寻找的可能是经验传递函数估计 (ETFE)。可以使用多种方法,但韦尔奇的平均周期图[1]可以说是最常用的[2]

植物输出数据通常使用高斯白噪声激励生成,但如果有关植物的先验信息已知,则可以通过实验设计生成更多信息输入信号[3]植物的 ETFE是输入和测量输出的功率谱密度估计值的,即 G^(k)Pyu(k)Puu(k)

G^(k)=Pyu(k)Puu(k).
在 Welch 的方法中,时间序列数据被划分为窗口段,并可选择使用重叠段。然后,计算每个段的修改周期图并对结果进行平均。Welch 生成 ETFE 的方法对应tfestimate于 MATLAB 中的函数。Welch 方法的优点之一是在使用的频率样本和激励信号的数量方面具有灵活性。

频率响应只是输出和输入信号的傅里叶变换之比。

H(ejω)=Y(ejω)X(ejω)

其中是输出的傅里叶变换:Y(ejω)y[n]

Y(ejω)=n=+y[n]ejωn

X (是输入的傅里叶变换:X(ejω)x[n]

X(ejω)=n=+x[n]ejωn

选择一个输入可能是一个好主意,使得对于频率响应中所有感兴趣的x[n]X(ejω)0ω

if you give an impulse as input , frequency response of output signal is equal to frequency response of filter. 
This technique is efficient only if you don't know filter specifications. 

所以我假设你对过滤器规格一无所知。在这里,这个 matlab 代码实现了该技术。

fs=1000;
impulse=[1 zeros(1,999)];
f=linspace(-fs/2,fs/2,length(impulse));
hpass=fdesign.highpass('Fst,Fp,Ast,Ap',100,200,40,1,fs);
Hdhp=design(hpass,'butter');
y=filter(Hdhp,impulse);
figure,plot(f,fftshift(abs(fft(y,fs))));