核心内容摘要
基于SpringBoot的客户股票交易教学系统的设计与实现(源码+lw+部署文档+讲解等)
滤波器设计与仿真在控制工程中的应用在控制工程中滤波器设计与仿真是一个非常重要的环节。
滤波器可以用于信号的预处理、噪声的抑制、系统的稳定性分析以及控制律的实现等。
本节将详细介绍滤波器在控制工程中的应用包括常见的滤波器类型、设计方法以及仿真工具的使用。
2
1 常见的滤波器类型及其应用在控制工程中常用的滤波器类型包括低通滤波器、高通滤波器、带通滤波器和带阻滤波器。
这些滤波器在不同的应用场景中发挥着重要的作用。
24.
1 低通滤波器低通滤波器允许低频信号通过而抑制高频信号。
在控制工程中低通滤波器常用于信号平滑、噪声抑制以及系统的稳定性分析。
原理低通滤波器的频率响应特性是随着频率的增加滤波器的增益逐渐降低。
常见的低通滤波器有RC滤波器、巴特沃斯滤波器、切比雪夫滤波器等。
其中RC滤波器是最简单的低通滤波器其传递函数为H(s)11RCs H(s) \frac{1}{1 RCs}H(s)1RCs1其中RRR是电阻CCC是电容sss是复频率变量。
应用在控制系统中低通滤波器可以用于平滑输入信号减少高频噪声的影响。
例如在PID控制器中低通滤波器可以用于平滑误差信号提高控制系统的稳定性。
例子假设我们有一个PID控制器输入信号中包含高频噪声。
我们可以使用低通滤波器来平滑输入信号。
importnumpyasnpimportmatplotlib.pyplotaspltfromscipy.signalimportbutter,filtfilt# 定义PID控制器参数Kp
0Ki
1Kd
05# 生成带有高频噪声的输入信号tnp.linspace(0,10,
input_signalnp.sin(2*np.pi*t)
5*np.random.randn(t.size)# 设计低通滤波器defbutter_lowpass(cutoff,fs,order
:nyq
5*fs normal_cutoffcutoff/nyq b,abutter(order,normal_cutoff,btypelow,analogFalse)returnb,adefbutter_lowpass_filter(data,cutoff,fs,order
:b,abutter_lowpass(cutoff,fs,orderorder)yfiltfilt(b,a,data)returny# 参数设置cutoff
0# 截止频率fs
1
0# 采样频率order6# 滤波器阶数# 应用低通滤波器filtered_signalbutter_lowpass_filter(input_signal,cutoff,fs,order)# 绘制结果plt.figure(figsize(10,
)plt.plot(t,input_signal,labelInput Signal with Noise)plt.plot(t,filtered_signal,labelFiltered Signal)plt.xlabel(Time [s])plt.ylabel(Amplitude)plt.legend()plt.grid(True)plt.show()描述在这个例子中我们首先生成了一个带有高频噪声的正弦输入信号。
然后我们设计了一个截止频率为3 Hz的六阶低通滤波器并使用scipy.signal库中的filtfilt函数对输入信号进行滤波。
最后我们绘制了原始信号和滤波后的信号可以看出滤波后的信号更加平滑高频噪声被有效抑制。
24.
2 高通滤波器高通滤波器允许高频信号通过而抑制低频信号。
在控制工程中高通滤波器常用于信号的高频成分提取、去除直流分量以及动态信号的处理。
原理高通滤波器的频率响应特性是随着频率的增加滤波器的增益逐渐增加。
常见的高通滤波器有RC高通滤波器、巴特沃斯高通滤波器等。
其中RC高通滤波器的传递函数为H(s)RCs1RCs H(s) \frac{RCs}{1 RCs}H(s)1RCsRCs其中RRR是电阻CCC是电容sss是复频率变量。
应用在控制系统中高通滤波器可以用于去除输入信号中的直流分量提取高频动态信号。
例如在振动控制系统中高通滤波器可以用于提取振动信号中的高频成分。
例子假设我们有一个包含直流分量和高频振动信号的输入信号。
我们可以使用高通滤波器来去除直流分量提取高频振动信号。
importnumpyasnpimportmatplotlib.pyplotaspltfromscipy.signalimportbutter,filtfilt# 生成带有直流分量和高频振动信号的输入信号tnp.linspace(0,10,
input_signal
0np.sin(2*np.pi*10*t)
5*np.random.randn(t.size)# 设计高通滤波器defbutter_highpass(cutoff,fs,order
:nyq
5*fs normal_cutoffcutoff/nyq b,abutter(order,normal_cutoff,btypehigh,analogFalse)returnb,adefbutter_highpass_filter(data,cutoff,fs,order
:b,abutter_highpass(cutoff,fs,orderorder)yfiltfilt(b,a,data)returny# 参数设置cutoff
0# 截止频率fs
1
0# 采样频率order6# 滤波器阶数# 应用高通滤波器filtered_signalbutter_highpass_filter(input_signal,cutoff,fs,order)# 绘制结果plt.figure(figsize(10,
)plt.plot(t,input_signal,labelInput Signal with DC and Noise)plt.plot(t,filtered_signal,labelFiltered Signal)plt.xlabel(Time [s])plt.ylabel(Amplitude)plt.legend()plt.grid(True)plt.show()描述在这个例子中我们生成了一个包含
0的直流分量和10 Hz的高频振动信号的输入信号。
然后我们设计了一个截止频率为5 Hz的六阶高通滤波器并使用scipy.signal库中的filtfilt函数对输入信号进行滤波。
最后我们绘制了原始信号和滤波后的信号可以看出滤波后的信号已经去除了直流分量高频振动信号得到了保留。
24.
3 带通滤波器带通滤波器允许特定频带范围内的信号通过而抑制其他频率的信号。
在控制工程中带通滤波器常用于信号的频带选择、特定频率成分的提取以及系统的频率响应分析。
原理带通滤波器的频率响应特性是在特定的频带范围内增益较大而在其他频率范围内增益较小。
常见的带通滤波器有巴特沃斯带通滤波器、切比雪夫带通滤波器等。
其中巴特沃斯带通滤波器的传递函数为H(s)1(sω
2n(ω0s)2n H(s) \frac{1}{\left(\frac{s}{\omega_0}\right)^{2n} \left(\frac{\omega_0}{s}\right)^{2n}}H(s)(ω0s)2n(sω0)2n1其中ω0\omega_0ω0是中心频率nnn是滤波器阶数。
应用在控制系统中带通滤波器可以用于提取特定频率范围内的信号。
例如在音频处理中带通滤波器可以用于提取人声或特定乐器的声音。
例子假设我们有一个包含多个频率成分的音频信号。
我们可以使用带通滤波器来提取特定频率范围内的信号。
importnumpyasnpimportmatplotlib.pyplotaspltfromscipy.signalimportbutter,filtfilt# 生成包含多个频率成分的音频信号tnp.linspace(0,10,
input_signalnp.sin(2*np.pi*5*t)np.sin(2*np.pi*15*t)
5*np.random.randn(t.size)# 设计带通滤波器defbutter_bandpass(lowcut,highcut,fs,order
:nyq
5*fs lowlowcut/nyq highhighcut/nyq b,abutter(order,[low,high],btypeband,analogFalse)returnb,adefbutter_bandpass_filter(data,lowcut,highcut,fs,order
:b,abutter_bandpass(lowcut,highcut,fs,orderorder)yfiltfilt(b,a,data)returny# 参数设置lowcut
1
0# 低截止频率highcut
2
0# 高截止频率fs
1
0# 采样频率order6# 滤波器阶数# 应用带通滤波器filtered_signalbutter_bandpass_filter(input_signal,lowcut,highcut,fs,order)# 绘制结果plt.figure(figsize(10,
)plt.plot(t,input_signal,labelInput Signal with Multiple Frequencies)plt.plot(t,filtered_signal,labelFiltered Signal (
Hz))plt.xlabel(Time [s])plt.ylabel(Amplitude)plt.legend()plt.grid(True)plt.show()描述在这个例子中我们生成了一个包含5 Hz、15 Hz和高频噪声的音频信号。
然后我们设计了一个通带为10 Hz到20 Hz的六阶带通滤波器并使用scipy.signal库中的filtfilt函数对输入信号进行滤波。
最后我们绘制了原始信号和滤波后的信号可以看出滤波后的信号主要保留了15 Hz的频率成分其他频率成分被有效抑制。
24.
4 带阻滤波器带阻滤波器允许特定频带范围外的信号通过而抑制特定频带范围内的信号。
在控制工程中带阻滤波器常用于信号的特定频率成分抑制、系统的频率响应分析以及噪声的抑制。
原理带阻滤波器的频率响应特性是在特定的频带范围内增益较小而在其他频率范围内增益较大。
常见的带阻滤波器有巴特沃斯带阻滤波器、切比雪夫带阻滤波器等。
其中巴特沃斯带阻滤波器的传递函数为H(s)1(sω
2n(ω0s)2n2 H(s) \frac{1}{\left(\frac{s}{\omega_0}\right)^{2n} \left(\frac{\omega_0}{s}\right)^{2n} 2}H(s)(ω0s)2n(sω0)2n21其中ω0\omega_0ω0是中心频率nnn是滤波器阶数。
应用在控制系统中带阻滤波器可以用于抑制特定频率范围内的噪声。
例如在电机控制中带阻滤波器可以用于抑制特定频率的电磁干扰。
例子假设我们有一个包含多个频率成分的电机控制信号其中有一个特定频率的电磁干扰。
我们可以使用带阻滤波器来抑制该频率的干扰。
importnumpyasnpimportmatplotlib.pyplotaspltfromscipy.signalimportbutter,filtfilt# 生成包含多个频率成分的电机控制信号tnp.linspace(0,10,
input_signalnp.sin(2*np.pi*5*t)np.sin(2*np.pi*15*t)
5*np.random.randn(t.size)# 设计带阻滤波器defbutter_bandstop(lowcut,highcut,fs,order
:nyq
5*fs lowlowcut/nyq highhighcut/nyq b,abutter(order,[low,high],btypebandstop,analogFalse)returnb,adefbutter_bandstop_filter(data,lowcut,highcut,fs,order
:b,abutter_bandstop(lowcut,highcut,fs,orderorder)yfiltfilt(b,a,data)returny# 参数设置lowcut
1
0# 低截止频率highcut
2
0# 高截止频率fs
1
0# 采样频率order6# 滤波器阶数# 应用带阻滤波器filtered_signalbutter_bandstop_filter(input_signal,lowcut,highcut,fs,order)# 绘制结果plt.figure(figsize(10,
)plt.plot(t,input_signal,labelInput Signal with Multiple Frequencies)plt.plot(t,filtered_signal,labelFiltered Signal (
Hz Notch))plt.xlabel(Time [s])plt.ylabel(Amplitude)plt.legend()plt.grid(True)plt.show()描述在这个例子中我们生成了一个包含5 Hz、15 Hz和高频噪声的电机控制信号。
然后我们设计了一个通带为10 Hz到20 Hz的六阶带阻滤波器并使用scipy.signal库中的filtfilt函数对输入信号进行滤波。
最后我们绘制了原始信号和滤波后的信号可以看出滤波后的信号已经去除了15 Hz的频率成分其他频率成分被保留。
2
2 滤波器设计方法滤波器设计方法多种多样常见的方法包括频率响应法、阶跃响应法、脉冲响应法等。
在控制工程中最常用的是频率响应法和阶跃响应法。
24.
1 频率响应法频率响应法是通过设计滤波器的频率响应特性来实现滤波器的设计。
这种方法适用于需要精确控制滤波器在不同频率上的增益和相位的应用。
原理频率响应法通过定义滤波器在频率域上的传递函数来设计滤波器。
常见的传递函数形式包括巴特沃斯、切比雪夫、贝塞尔等。
这些传递函数可以通过解析方法或数值方法来求解。
应用在控制系统中频率响应法常用于设计低通、高通、带通和带阻滤波器。
例如在飞行控制系统中频率响应法可以用于设计低通滤波器来平滑飞行器的姿态信号。
例子假设我们需要设计一个巴特沃斯低通滤波器其截止频率为5 Hz。
我们可以使用scipy.signal库中的butter函数来设计滤波器。
importnumpyasnpimportmatplotlib.pyplotaspltfromscipy.signalimportbutter,freqz# 参数设置cutoff
0# 截止频率fs
1
0# 采样频率order6# 滤波器阶数# 设计巴特沃斯低通滤波器nyq
5*fs normal_cutoffcutoff/nyq b,abutter(order,normal_cutoff,btypelow,analogFalse)# 绘制频率响应w,hfreqz(b,a,worN
plt.figure(figsize(10,
)plt.plot(
5*fs*w/np.pi,np.abs(h),b)plt.title(Frequency Response of a 6th Order Butterworth Low-pass Filter)plt.xlabel(Frequency [Hz])plt.ylabel(Amplitude)plt.grid(True)plt.show()描述在这个例子中我们设计了一个截止频率为5 Hz的六阶巴特沃斯低通滤波器。
使用scipy.signal库中的butter函数生成滤波器的系数然后使用freqz函数绘制滤波器的频率响应。
从图中可以看出滤波器在5 Hz以下的频率范围内增益接近1而在5 Hz以上的频率范围内增益迅速降低。
24.
2 阶跃响应法阶跃响应法是通过设计滤波器的阶跃响应特性来实现滤波器的设计。
这种方法适用于需要精确控制滤波器在时域上的响应的应用。
原理阶跃响应法通过定义滤波器对阶跃输入的响应来设计滤波器。
常见的阶跃响应包括一阶、二阶等。
这些响应可以通过解析方法或数值方法来求解。
应用在控制系统中阶跃响应法常用于设计低通滤波器和高通滤波器。
例如在温度控制系统中阶跃响应法可以用于设计低通滤波器来平滑温度信号。
例子假设我们需要设计一个一阶低通滤波器其时间常数为1秒。
我们可以使用阶跃响应法来设计滤波器。
importnumpyasnpimportmatplotlib.pyplotaspltfromscipy.signalimportlti,step# 参数设置tau