matlab设计滤波器方法

matlab  tf()函数可用来建立传递函数,使用方法有很多,最直接方法如下:

1、建立连续传递函数

s = tf('s')
sys = s/(s^2 + 2*s + 10)

输出结果:

sys =
 
        s
  --------------
  s^2 + 2 s + 10
 
Continuous-time transfer function.

2、建立离散传递函数

ts = 0.1;
z = tf('z',ts)
sys = (z - 1) / (z^2 - 1.85*z + 0.9)

输出结果:

sys =
 
        z - 1
  ------------------
  z^2 - 1.85 z + 0.9
 
Sample time: 0.1 seconds
Discrete-time transfer function.

三  滤波器滤波器传递函数一般可写成如下形式:

在此我们只考虑数字滤波器,其中n代表滤波器的阶数,通过设定不同 的系数b,a可设计低通,高通,带通,带阻滤波器。

由离散传递函数很容易得出差分方程:

a(1)y(n)=b(1)x(n)+b(2)x(n−1)+...+b(nb+1)x(n−nb)−a(2)y(n−1)−...−a(na+1)y(n−na).

对于二阶传递函数一般写成:

 二阶差分方程为:

一阶差分方程:

 

 

四 用matlab生成两种滤波器

1、  matlab [b,a] = butter(n,Wn) n:滤波器阶数,Wn:截止频率,默认生成n阶巴特沃斯低通滤波器

例如生成一六阶低通滤波器:

fc = 300;
fs = 1000;

[b,a] = butter(6,fc/(fs/2));

freqz(b,a,[],fs)

subplot(2,1,1)
ylim([-100 20])

[b,a]可直接带入tf()函数中,可通过幅频特性图查看滤波器性能。

2、生成一二阶陷波滤波器  [b,a] = iirnotch(wc,wb);

代码可参考matlab帮助文档,[b,a]可直接带入tf()查看效果

若想生成单片机可执行的c语言函数,可用matlab coder转换butter(n,Wn)和iirnotch(wc,wb)函数,则可生成对应的C语言函数,生成的[b,a]系数可直接带入差分方程。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值