2015-07-10 51 views
1

我有一个频率为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

该网站[dsp.se]可能对这些问题有帮助 – 2015-07-11 02:29:32

回答

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,:));