概述
目录
- 前言
- 一、在simulink中设计滤波器
- 二、在Matlab中绘制Bode图
- 总结
前言
在使用simulink时难免需要用到滤波器的设计与使用,同时为了作图或者其他的需要,我们需要查看滤波器的相频特性,所以一般需要用到Matlab来编写滤波器的传递函数来实现。
提示:以下是本篇文章正文内容,下面案例可供参考
一、在simulink中设计滤波器
Simulink是个非常强大的工具,我们很多反正都要在上面跑。同时他也具备很多完善的功能。对于滤波器的设计,里面其实有很多现成的模块,但是出于种种原因,每个人都有自己的一套习惯。接下来我给大家介绍一下我平时使用simulink时进行滤波器设计时的小Tips。
这个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中进行相频特性的显示,另外还提出了如何计算复杂的传递函数。
最后
以上就是娇气大侠为你收集整理的Matlab滤波器的设计与实现前言一、在simulink中设计滤波器二、在Matlab中绘制Bode图总结的全部内容,希望文章能够帮你解决Matlab滤波器的设计与实现前言一、在simulink中设计滤波器二、在Matlab中绘制Bode图总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复