Matlab滤波器的设计与实现


前言

在使用simulink时难免需要用到滤波器的设计与使用,同时为了作图或者其他的需要,我们需要查看滤波器的相频特性,所以一般需要用到Matlab来编写滤波器的传递函数来实现。


提示:以下是本篇文章正文内容,下面案例可供参考

一、在simulink中设计滤波器

Simulink是个非常强大的工具,我们很多反正都要在上面跑。同时他也具备很多完善的功能。对于滤波器的设计,里面其实有很多现成的模块,但是出于种种原因,每个人都有自己的一套习惯。接下来我给大家介绍一下我平时使用simulink时进行滤波器设计时的小Tips。
FDA滤波器
这个FDA滤波器是在simulink中设计常用的。其内部界面如下所示:
在这里插入图片描述
可以看到左侧和右侧都有相应的选项可以进行选择。一般我们在选好滤波器参数后,点击右下方的设计滤波器即可进行看到滤波的效果。一般我在simulink中并不直接使用此FDA滤波器进行滤波,只是通过它进行一个设计的过程。
上图中在点击红色圆圈后就可以看到分子分母等字眼。这个是滤波器的传递函数的参数。但是值得注意的是这是Z变换下的传递函数参数。接下来得到该参数后我们就可以在simulink中进行滤波器设计。这里使用的模块叫Biquad。
在这里插入图片描述
在这里插入图片描述
我们在FDA中得到的参数可以直接在该模块中输入,一般如果是二阶的话只需要一个Biquad模块,但是如果阶数高了就需要多个Biquad模块级联。在FDA中得到的分子和分母按顺序填入Biquad中的SOS Matrix中,增益写在Scale values可以看到Scale values中有两个量,分别是单个滤波器的增益和最终的输出增益。
那么接下来,我如何将其的Bode图画出来呢?

二、在Matlab中绘制Bode图

在前面已经提到了,滤波器的参数是Z变换下的传递函数参数,一般我们用的比较多的是S域的,所以我喜欢将Z变换先转换到S域,在进行bode图的绘制。
具体代码如下:

close all;
clear;
%定义系数
Ts = 1/10000;
LPF1_Gain = 0.000243789376891689250990286064180168069;
LPF2_Gain = 0.000239761982563389738085449232052326352;
%设计传递函数
LPF1_num = LPF1_Gain*[1 2 1];%分子
LPF1_den = [1 -1.975269634851873012948431096447166055441 0.976244792359439950146793307794723659754];%分母
LPF1 = tf(LPF1_num,LPF1_den,Ts);
LPF2_num = LPF2_Gain*[1 2 1];%分子
LPF2_den = [1 -1.942638230540113530864232416206505149603 0.943597278470367117897410480509279295802];%分母
LPF2 = tf(LPF2_num,LPF2_den,Ts);
%生成Z变换的LPF传递函数,由于滤波器的设计中的参数为离散的Z变换结果
LPF_filter_Z = LPF1*LPF2;
LPF_filter_S = d2c(LPF_filter_Z')%转换到S域
%设计伯德图
P=bodeoptions;
P.Grid='on';
P.XLim={[1 1000]};
P.XLimMode={'manual'};
P.FreqUnits='Hz';
figure 
bode(LPF_filter_S,P);
figure
bode(LPF_filter_Z,P);

另外还需要考虑一个问题:就是面对复杂传递函数时,如何进行传递函数的设计。这里举一个我正在做的例子。
我需要计算一个环路的闭环传递函数,并显示其bode图,其具体的传递函数示意如下:在这里插入图片描述
其中LPF的传递函数我已经通过上面的方法得到了,那么这样的传递函数应该如何表示呢?
实质上可以发现这是一个简单的负反馈系统,在负反馈闭环系统中: 假设系统单输入R(s);单输出C(s),前向通道传递函数G(s),反馈为负反馈H(s)。
此闭环系统的闭环传递函数: G(s)/[1+G(s)*H(s)]
所以可以直接使用matlab中的闭环负反馈函数feedback(G,H)。其中G是传递函数,H为反馈函数,表示一个控制系统G,对其进行负反馈H(要求正反馈用-H)。
对于其他明确知道参数的S函数可以参考https://blog.csdn.net/qq_44486550/article/details/107534072


总结

本文主要讲述了在simulink中如何对滤波器进行设计,并在matlab中进行相频特性的显示,另外还提出了如何计算复杂的传递函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

LEODWL

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

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

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

打赏作者

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

抵扣说明:

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

余额充值