Simulink 窄带陷波滤波器(Notch filter)仿真到代码生成

目录

窄带陷波滤波器(Notch filter)原理

设计一个Notch filter

生成代码

离散传递函数生成代码配置

差分方程生成代码

方程推导

构建差分方程模型

总结


窄带陷波滤波器(Notch filter)原理

陷波滤波器指的是可以将某一频率迅速衰减的滤波器,直接上效果图,如下图所示在常数100的信号上叠加了一个幅值为10的100Hz的频率,通过Notch filter后就得到了稳定的信号100,相当于抑制了振荡。可以用来抑制系统的共振点或者消除周期性的振荡等。

蓝色滤波前的信号,黄色滤波后的信号

设计一个Notch filter

传递函数如下:

 

 传递函数的伯德图:

从伯德图可以看出在某一个频率点会衰减,我们需要根据振荡的频率去调整w0=2*pi*f  (这里f是振荡频率),达到过滤掉振荡的效果。Q的值影响的是稳定的速度。

Q=1.9的伯德图和仿真效果

Q= 0.9的伯德图和仿真效果(衰减变小): 

 

 

生成代码

前面是s域的仿真,要能生成代码在硬件里面运行,需要把s域转成z域。这里生成代码的方式有以下两种,一种直接用离散传递函数,一种把离散传递函数转成差分方程。经对比,离散域传递函数会涉及到除法计算,有些单片机执行效率可能不高,而差分方法只有乘加,不涉及除法,计算效率会更高

离散传递函数生成代码配置

通过.m脚本实现s的传递函数转z. 15e-006是采样频率。

G_z = c2d(G_s,15e-006,'tustin');

这里有个小坑,Matlab的命令窗口只显示小数点后4位,可能会因为数据的精度影响到滤波效果,还需要对Matlab进行数据小数位数的设置,设置如下:

设置好后一般的除法可以显示到小数位后15位,但是传递函数形式的数据还是只显示4位。因此用如下指令取到传递函数的分子和分母的系数。
G_z_Numerator= G_z.Numerator{1};
G_z_Denominator=G_z.Denominator{1};

 display(G_z_Numerator);
display(G_z_Denominator);

 这样就得到了离散传递函数的参数,我们把得到的分子和分母的系数放到模型中仿真

差分方程生成代码

方程推导

差分方程只需要把离散传递函数转一下就好了,转的步骤如下:

 传递函数转差分方程步骤:

1. 改写成如下形式

\frac{Y(z)}{X(z)}=\frac{0.9948z^{2}-1.989z+0.9948}{z^{2}-1.989z+0.9896}

2.分子分母同时除z^2

\frac{Y(z)}{X(z)}=\frac{0.9948-1.989z^{-1}+0.9948z^{-2}}{1-1.989z^{-1}+0.9896z^{-2}}

3.交叉相乘

Y(z)*1-Y(z)*1.989z^{-1}+Y(z)*0.9896z^{-2}=X(z)*0.9948-X(z)*1.989z(-1)+X(z)*0.9948z^{-2}

4.把Y(z)移到等式左边

Y(z)=Y(z)*1.989z^{-1}-Y(z)*0.9896z^{-2}+X(z)*0.9948-X(z)*1.989z(-1)+X(z)*0.9948z^{-2}

5.把上面等式写成差分方程的形式

Y(k)=Y(k-1)*1.989-Y(k-2)*0.9896+X(k)*0.9948-X(k-1)*1.989+X(k-2)*0.9948

构建差分方程模型

通过Simulink构建方程模型。

 离散传递函数和差分方程仿真效果一样(这里Q值有些不同)

总结

总结下学习心得,通过对Notch filter的学习

1.了解Notch filter的工程意义应用场合和参数调试

2. 实际工程利用Matlab如何把s传递函数转为z传递函数再转成差分方程,方便生成代码

参考模型:

NotchFilter陷波滤波器仿真-快应用文档类资源-CSDN下载

  • 11
    点赞
  • 77
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡洛斯伊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值