从频率响应函数中删除已知谐波

时间:2015-07-10 08:20:34

标签: matlab filter frequency

我有一个输入正弦波,它在时域中,频率为10Hz。我正在尝试在MATLAB中编写代码,为2dof模态分析问题开发频率响应函数。

enter image description here

在输出中,在10Hz处有一个主导峰值,这显然是由输入谐波引起的

问题:

在matlab中从响应(输出)中消除这种已知谐波干扰的最佳方法是什么?

另外,当不知道干扰谐波时我该怎么办?

Fs=1/dt;
NFFT = 2 ^ nextpow2 (L);                       %L is the length of signal
Y = fft (Output_time(1,:), NFFT) / L;          %Response in time domain to frequency domain
X=fft(Input_time,NFFT)/L;                      %Input in time to frequency domain
f = Fs / 2 * linspace (0,1, NFFT / 2 + 1);     %Frequencies
Output_frequency=2 * abs (Y (1: NFFT / 2 + 1));
Input_frequency=2 * abs (X (1: NFFT / 2 + 1));
FRF=(Y(1: NFFT / 2 + 1)./X(1: NFFT / 2 + 1));  %Frequency Response Functions

1 个答案:

答案 0 :(得分:0)

感谢您的建议;我找到了所需的答案。

我使用了带阻滤波器来解决这个问题:

order=2;
lowFreq=9.5;
hiFreq=10.5;
[b,a] = butter(order, [lowFreq hiFreq]/(Fs/2), 'stop');
filtered_response = filter(b,a,u(1,:));