Matlab 从频率响应函数中去除已知谐波
我有一个输入正弦波,它在时域中,频率为10Hz。我试图在MATLAB中编写代码,为2自由度模态分析问题开发一个频率响应函数 在输出中,在10Hz处有一个占主导地位的峰值,这显然是由于输入谐波造成的 问题: 在matlab中,从响应(输出)中消除这种已知谐波干扰的最佳方法是什么 另外,当不知道干扰谐波时,我应该怎么做Matlab 从频率响应函数中去除已知谐波,matlab,filter,frequency,Matlab,Filter,Frequency,我有一个输入正弦波,它在时域中,频率为10Hz。我试图在MATLAB中编写代码,为2自由度模态分析问题开发一个频率响应函数 在输出中,在10Hz处有一个占主导地位的峰值,这显然是由于输入谐波造成的 问题: 在matlab中,从响应(输出)中消除这种已知谐波干扰的最佳方法是什么 另外,当不知道干扰谐波时,我应该怎么做 Fs=1/dt; NFFT = 2 ^ nextpow2 (L); %L is the length of signal Y = fft
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
谢谢你的建议;我发现答案是必须的 我使用带阻滤波器来解决这个问题:
order=2;
lowFreq=9.5;
hiFreq=10.5;
[b,a] = butter(order, [lowFreq hiFreq]/(Fs/2), 'stop');
filtered_response = filter(b,a,u(1,:));
谢谢你的建议;我发现答案是必须的 我使用带阻滤波器来解决这个问题:
order=2;
lowFreq=9.5;
hiFreq=10.5;
[b,a] = butter(order, [lowFreq hiFreq]/(Fs/2), 'stop');
filtered_response = filter(b,a,u(1,:));
如果你知道的话,你可以过滤它!了解一些关于滤波器的知识,因为也许仅仅一个带通滤波器就可以完成这项工作。该网站可能对此类问题有所帮助。如果你知道的话,你可以对其进行过滤!了解一些关于滤波器的知识,因为也许仅仅一个带通滤波器就可以完成这项工作。该网站可能会对这些问题有所帮助