Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 从频率响应函数中去除已知谐波_Matlab_Filter_Frequency - Fatal编程技术网

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

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

在输出中,在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

谢谢你的建议;我发现答案是必须的

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

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

如果你知道的话,你可以过滤它!了解一些关于滤波器的知识,因为也许仅仅一个带通滤波器就可以完成这项工作。该网站可能对此类问题有所帮助。如果你知道的话,你可以对其进行过滤!了解一些关于滤波器的知识,因为也许仅仅一个带通滤波器就可以完成这项工作。该网站可能会对这些问题有所帮助