2015-07-10 90 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,:));