利用MATLAB编程实现系统传递函数的构建以及它们之间进行串联、并联、反馈时的构建方法
本文主要介绍如何利用MATLAB编程实现系统传递函数的构建以及它们之间进行串联、并联、反馈时的构建方法
一、传递函数的构建方法
首先 ,我们把想要构建的传递函数分子和分母的系数按照阶次从高到低(缺项补零)分别保存在一个向量中,然后调用tf()函数进行构建,tf函数用来建立实部或复数传递函数模型或将状态方程、或零级增益模型转化成传递函数形式。比如构建如下传递函数的代码如下:
1 s 3 + 2 s 2 + s \frac{1}{s^3+2s^2+s} s3+2s2+s1
num=[1];
den=[1 2 1 0];
G=tf(num,den)
运行结果如下:
G =1---------------s^3 + 2 s^2 + s
如果我们拿到的传递环数是以零极点的形式表示的,而我们又不想手动的去展成多项式形式,可以采用如下的方式构建传递函数,我们把传递函数的零点z,极点p,增益k,分别放到一个向量中,然后再调用zpk()函数进行构建,如构建如下传递环数的代码如下:
1 s ( s + 1 ) 2 \frac{1}{s(s+1)^2} s(s+1)21
z=[]; //没有零点就空着,若里面写零代表分子为S
p=[0 -1 -1];
k=[1];
G=zpk(z,p,k)
运行结果如下:
G =1---------s (s+1)^2
其实以上两种模型之间可以相互转化,转化代码如下:
num_1=[1];den_1=[1 2 1 0];G_1=tf(num_1,den_1)[z,p,k]=tf2zp(num_1,den_1); //传递函数模型转化为零极点模型G_2=zpk(z,p,k)[num_3,den_3]=zp2tf(z,p,k); //零极点模型转化为传递函数模型G_3=tf(num_3,den_3)
运行结果如下:
G_1 =1---------------s^3 + 2 s^2 + sG_2 =1---------s (s+1)^2G_3 =1---------------s^3 + 2 s^2 + s
二、多个传递环数间串联、并联、反馈的构建方法
本部分我们用如下两个传递函数为例,就他们之间进行串联,并联,反馈的模型搭建方法进行介绍。
1 s 3 + 2 s 2 + s 和 1 s 2 + 2 s + 1 \frac{1}{s^3+2s^2+s} 和 \frac{1}{s^2+2s+1} s3+2s2+s1和s2+2s+11
1、串联
方法一:先根据第一部分的介绍搭建两个传递函数,然后利用用series函数计算两个传递函数的串联形式,代码如下:
num_1=[1];den_1=[1 2 1 0];G_1=tf(num_1,den_1);num_2=[1];den_2=[1 2 1 ];G_2=tf(num_2,den_2);[num_c,den_c]=series(G_1,G_2);G_c=tf(num_c,den_c)
这种方法呢有时会出现输出参数太多 (InputOutputModel)的错误,为了简洁性和不易错性,推荐大家采用以下的第二种方法,并联和反馈也将采用如下方法介绍:
num_1=[1];den_1=[1 2 1 0];num_2=[1];den_2=[1 2 1 ];[num_c,den_c]=series(num_1,den_1,num_2,den_2);G_c=tf(num_c,den_c)
运行结果如下:
G_c =1-------------------------------s^5 + 4 s^4 + 6 s^3 + 4 s^2 + s
2、并联
采用parallel()函数可以计算两个传递函数的并联形式,代码如下:
num_1=[1];den_1=[1 2 1 0];num_2=[1];den_2=[1 2 1 ];[num_b,den_b]=parallel(num_1,den_1,num_2,den_2);G_b=tf(num_b,den_b)
运行结果如下:
G_b =s^3 + 3 s^2 + 3 s + 1-------------------------------s^5 + 4 s^4 + 6 s^3 + 4 s^2 + s
3、反馈
采用feedback()函数可以计算两个传递函数的反馈形式,相比于前两种情况,feedback()多了最后一个参数,为1时为正反馈,为-1时为负反馈,缺省时为负反馈,代码如下:
num_1=[1];den_1=[1 2 1 0];num_2=[1];den_2=[1 2 1 ];[num_f,den_f]=feedback(num_1,den_1,num_2,den_2,-1); //此处为负反馈,将-1改为1,则变成正反馈G_f=tf(num_f,den_f)
运行结果如下:
G_f =s^2 + 2 s + 1-----------------------------------s^5 + 4 s^4 + 6 s^3 + 4 s^2 + s + 1
用以上方法就可以得到系统的闭环传递环数,也就得到了系统的闭环特征方程,可以进步求解特征方程的特征根,从而判断系统的稳定性,具体步骤可参考如下博文:博文链接:利用MATLAB解特征方程,并画出特征根的分布,便于分析系统的稳定性。
利用MATLAB编程实现系统传递函数的构建以及它们之间进行串联、并联、反馈时的构建方法相关推荐
- idft重建图像 matlab_利用 MATLAB 编程,打开一幅图像,对其进行 DFT 变换,并置其不同区域内的系数为零,进行 IDFT ,观察其输出效果。_学小易找答案...
[连线题]请对正确的快键键连线 [判断题]板书是指教师在课堂黑板或白板上书写,将教学内容形象.直观.简洁地传授给学生.清晰.流畅.快速的粉笔书写是课堂板书的基本功. [其它]利用 MATLAB 编程, ...
- Matlab:利用Matlab编程实现模拟分子布朗运动的动画展示
Matlab:利用Matlab编程实现模拟分子布朗运动的动画展示 目录 输出结果 实现代码 输出结果 实现代码 %Brownian motion clf; n=20; s=0.02; x = rand ...
- matlab 进行非线性回归,5.利用Matlab编程进行非线性回归分析.doc
5.利用Matlab编程进行非线性回归分析.doc §5. 利用Matlab编程计算非线性回归模型 --以Logistic曲线为例 1.原始数据 下表给出了某地区1971-2000年的人口数据(表1) ...
- 环形网络潮流计算matlab,利用matlab编程计算任意环形网络牛拉法潮流计算程序
环形网络潮流计算matlab,利用matlab编程计算任意环形网络牛拉法潮流计算程序,程序通用性强,通过修改参数可以得到任意节点和网络的环形网络牛拉法潮流计算. YID:696064261479453 ...
- 环形网络潮流计算matlab 利用matlab编程计算任意环形网络牛拉法潮流计算程序
环形网络潮流计算matlab 利用matlab编程计算任意环形网络牛拉法潮流计算程序,程序通用性强,通过修改参数可以得到任意节点和网络的环形网络牛拉法潮流计算. YID:856064261479453 ...
- 环形网络潮流计算matlab 利用matlab编程计算任意环形网络牛拉法潮流计算程序,程序通用性强
环形网络潮流计算matlab 利用matlab编程计算任意环形网络牛拉法潮流计算程序,程序通用性强,通过修改参数可以得到任意节点和网络的环形网络牛拉法潮流计算. 现有:6960642614794538 ...
- 环形网络潮流计算matlab 利用matlab编程计算任意环形网络牛拉法潮流计算程序,程序通用性强,通过修改参数
环形网络潮流计算matlab 利用matlab编程计算任意环形网络牛拉法潮流计算程序,程序通用性强,通过修改参数可以得到任意节点和网络的环形网络牛拉法潮流计算. 现有:6960642614794538 ...
- 利用Matlab编程实现对NetCDF数据针对某一坐标按时间提取风、流、水蒸气等变量信息
一.NetCDF数据介绍 NetCDF(network Common Data Form)网络通用数据格式是由美国大学大气研究协会(University Corporation for Atmosph ...
- 利用Matlab描述和求解传递函数
系统数学模型表示形式 有理多项式模型 在MATLAB中,传递函数可以方便地由其分子和分母多项式系数所构成的两个向量唯一确定出来,即 num = [b0,b1,-bm]; den=[1,a1,-,an] ...
最新文章
- 为清理助手制作便利工具的技术实现
- Android布局整合include界面控件 示例
- 需要熟悉的几个调试命令:objdump/pmap/ldd/stace
- java object对象的方法_Java常见对象Object类中的个别方法
- CF Edu54 E. Vasya and a Tree DFS+树状数组
- mysql select效率_Mysql优化之selectcount效率_MySQL
- 继爱奇艺之后,腾讯视频、优酷宣布:取消剧集超前点播服务
- 如何扩大网站访问,五种方法让问题不再难
- 1071 Speech Patterns
- Android大牛博客集
- svnserver 修改配置后重启
- 外包公司是做什么的?
- 兰斯洛特·δ零式·开发计划
- oracle等差数列,数列的通项公式的教案
- python基于requests库实现12306火车票余票信息以及票价信息查询
- 微信建群怎么建?2个方法,快速学会!
- android+cortana+语音唤醒,为什么语音唤醒Cortana咒语是“你好,小娜”?
- 基于JAVA图书商城购物系统的设计与实现
- Python语言程序设计基础_实验2 基本数据类型和运算_答案_通识教育必修课程_上海师范大学
- 腾讯QQ2004II Beta3火爆下载 可自定义头像