matlab控制理论学习

news/2024/11/29 2:39:43/

一、求传递函数表达式residue()

1、极点不同的情况

分子和分母的矩阵分别为:

>> num=[2 5 3 6];

>> den=[1 6 11 6];

使用下列命令,即可对分式进行展开,展开后有多项,每一项的分子一定是数字,而分母则是一个多项式,r称为留数,p称为级数,k称为单独项

>> [r,p,k]=residue(num,den)

2、根据分式展开式得到多项式

>> r=[-6 -4 3];

>> p=[-3 -2 -1];

>> k=2;

>> [num1,num2]=residue(r,p,k);

>> printsys(num1,num2,'s')

3、极数相等的情况

上边的例子都是分母极数不相等的,所以分母都是一次多项式,但如果考虑到另一种情况,分母也称为特征多项式,这个多项式有重根。

>> num1=[0 1 2 3];

>> num2=[1 3 3 1];

>> [r,p,k]=residue(num1,num2)

可以看到p的数值有三个,且相同,那么分母将不是一次多项式,而是

得到原函数

>> [num1,num2]=residue(r,p,k)

>> printsys(num1,num2,'s')

二、求传递函数的零点、极点以及增益K

格式:[z,p,k]=tf2zp(num,den)

z代表零点,p代表极点,k代表增益

例题1:

>> num=[0 4 16 12];

>> den=[1 12 44 48];

>> [z,p,k]=tf2zp(num,den)

如果已经给定零点、极点和增益,可以使用如下代码生成原来的函数

>> z=[-3;-1];

>> p=[-6;-4;-2];

>> k=4;

>> [num,den]=zp2tf(z,p,k);

>> printsys(num,den,'s')

三、有理假分式展开、求留数、极点和直接项

所谓有理假分式,就是分子的阶数比分母高,这就导致了有理假分式进行分式展开时含有直接项

例题1:求以下式子的的拉普拉斯逆变换

>> num=[1 8 23 35 28 3];

>> den=[1 6 8 0];

>> [r,p,k]=residue(num,den)

可以求出展开式:

四、给定传递函数的零点、极点以及增益K求原传递函数

tf2zp:根据传递函数的分子分母来求得传递函数的零点、极点以及增益K

zp2tf:根据零点、极点和增益K求取传递函数

五、使用roots命令解多项式的根以及使用poly命令得到原多项式

例题1:

>> clear all

>> d=[1 2 3 4];

>> r=roots(d)

如果已经有原方程的根,则使用命令poly可以生成原多项式的系数

>> poly(r)

六、使用ord2命令生成一个标准的二阶系统

标准的二阶系统:

ord2命令能够生成一个二阶系统,但是分子部分没有常数的平方,所以需要乘一个系数

例子:

>> wn=5;

>> damping_ratio=0.4;

>> [num0,den]=ord2(wn,damping_ratio)

>> printsys(num0,den,'s')

七、求传递函数的单位阶跃响应并绘制出曲线

如果传递函数的分子和分母都是已知的,可以通过tf命令来定义传递函数

>> sys=tf(num,den)

num和den分别是传递函数的分子和分母系数,使用step函数来求出响应曲线

>> step(sys)

或者

>> step(num,den)

例题1:

>> num=[25];

>> den=[1 4 25];

>> step(num,den)

八、求传递函数的奈奎斯特曲线

直接绘图

>> num=[0.5];

>> den=[1 2 1 0.5];

>> sys=tf(num,den)

>> nyquist(sys)

在图上显示幅值裕度和相角裕度

>> [Gm,Pm,Wcg,Wcp]=margin(sys)

>> nyquist(sys)

>> title(['Gm=',num2str(Gm),',','Pm=',num2str(Pm)])

九、求传递函数的伯德图

例子:

其中伯德图包括幅频特性曲线和相频特性曲线

1、在10的-1次幂和10的3次幂之间生成200个点:

>> w=logspace(-1,3,200);

2、分子多项式系数:

>> num=5*[0.1 1];

3、分子是一个简单的多项式乘积,使用卷积命令conv来求乘积后的多项式系数

>> f1=[1 0];

>> f2=[0.5 1];

>> f3=[1/2500 0.6/50 1];

>> den=conv(f1,conv(f2,f3));

4、绘制伯德图

>> sys=tf(num,den)

>> bode(sys,w)

十、利用margin求幅值裕度和相角裕度

>> num=[0.5];

>> den=[1 2 1 0.5];

>> sys=tf(num,den);

>> margin(sys)

返回参数不绘图

1、直接使用传递函数求

>> [Gm,Pm,Wcg,Wcp] = margin(sys)

2、利用伯德图返回的参数求

>> [mag,phase,w] = bode(sys)

>> [Gm,Pm,Wcg,Wcp] = margin(mag,phase,w)

十一、根轨迹绘制

某系统的开环传递函数如下,求根轨迹

>> num=[1,2,4];

>> den=conv(conv([1,4,0],[1,6]),[1,1.4,1]);

>> sys=tf(num,den);

>> rlocus(sys)       //绘制根轨迹

>> axis([-8 2 -6 6])   //设定坐标范围,实轴[-8 2] 虚轴[-6 6]

在分析系统性能时,除了某一点对应的根轨迹增益外,有时还需要知道该增益对应的其他闭环极点的值,这时候输入以下命令:

>> [k,p]=rlocfind(sys)

十二、已知闭环传递函数求开环传递函数

开环传递函数=feedback(闭环传递函数,-1)
闭环传递函数=feedback(开环传递函数,1)

十三、求解微分方程的解

dsolve(‘方程1’,‘方程2’,…,‘方程n’,‘初始条件’,‘自变量),

初始条件省缺时,是求微分方程的通解。

Dy代表y的导数,D2y代表y的二阶导数, D3y代表y的三阶导数……

例题1:

>> y=dsolve('D2y+2*Dy+y-x^2=0','x')

例题2:

>> y1=dsolve('D2y+4*Dy+29*y=0','y(0)=0,Dy(0)=15','x')

例题3:

>> eq1='Dx=2*x-3*y+3*z';

>> eq2='Dy=4*x-5*y+3*z';

>> eq3='Dz=4*x-4*y+2*z';

>> [x,y,z]=dsolve(eq1,eq2,eq3,'x(0)=1,y(0)=2,z(0)=1')

十四、泰勒展开

1、求公式f的麦克劳林多项式

格式:taylor(f)

2、求公式f在x=1处的泰勒级数展开

格式:taylor(f,x,’EspansionPoint’,1)

格式:taylor(f,x,1)

3、求函数f的泰勒多项式的n项目

格式:taylor(f,’order’,4)

4、求函数f在x=n处的a阶多项式

格式:taylor(f,x,n,’order’,a)

5、画出展开式的图

ezplot(ans)

十五、状态空间表达式建立

>> A=[3,1,0.5;1 0.1 0;1.2 6 0.1]

>> B=[1;0;3]

>> C=[1 1 2]

>> D=0

>> sys=ss(A,B,C,D)     //建立状态空间表达式模型

>> sys=tf(sys)        //得到系统多项式形式的传递函数模型

>> sys=zpk(sys)      //得到系统零-极点形式的传递函数模型

>> [num,den]=ss2tf(A,B,C,D)  //传递函数多项式形式的分子、分母多项式系数

>> [A,B,C,D]=tf2ss(num,den)  //与上边的式子反过来

>> [z,p,k]=ss2zp(A,B,C,D)     //得到极点、零点、增益

>> [A,B,C,D]=zp2ss(z,p,k)     //跟上边的式子反过来

十六、判断系统稳定性

eig函数:直接判定

pzmap函数:图解判定

1、高阶连续系统稳定性的判断

>> num=[10 50 100 100 40];

>> den=[1 21 184 870 2384 3664 2496];

>> sys=tf(num,den);

>> sys1=feedback(sys,1)   //求系统单位反馈传递函数

>> pzmap(sys1)          //绘制零极点图

>> eig(sys1)             //求系统特征根

2、高阶离散系统稳定性判断

>> num=[6 -0.6 -0.12];

>> den=[1 -1 0.25 0.25 -0.125];

>> sys=tf(num,den,'Ts',0.1)

>> z=tf('z','Ts',0.1)

>> Gc=0.3*(z-0.6)/(z+0.8);

>> sys1=feedback(sys*Gc,1)

>> pzmap(sys1),abs(eig(sys1)')

十七、傅里叶变换

1、傅里叶变换

>> syms x w

>> f=exp(-x^2);

>> g=fourier(f,w)

2、傅里叶逆变换

>> syms x w

>> f=exp(-w^2/4);

>> g=ifourier(f,x)

十八、拉普拉斯变换

1、拉普拉斯变换

例题1:

>> syms t;

>> x=t*exp(-2*t);

>> X=laplace(x);

>> disp(X)

例题2:

>> syms t;

>> x=exp(-t)*sin(2*t);

>> X=laplace(x);

>> disp(X)

2、拉普拉斯逆变换

例题1:

>> syms s;

>> F=100*(s+50)/(s^2+201*s+200);

>> f=ilaplace(F);

>> disp(F)

>> ezplot(f)

例题2:

>> syms s;

>> F=1/(4*s*(s^2+1));

>> f=ilaplace(F);

>> disp(f)

>> ezplot(f)

整理自

一:用MATLAB求传递函数的零点,极点以及增益K_Mr.YunLong的博客-CSDN博客_matlab求传递函数零极点

MATLAB学习记录-传递函数的建模2(零-极点形式的传递函数模型)-自动控制篇_Blablabla...的博客-CSDN博客_zp2tf函数

MATLAB学习记录-传递函数的建模1(多项式形式的传递函数模型)-自动控制篇_Blablabla...的博客-CSDN博客_传递函数的分子分母系数


http://www.ppmy.cn/news/18992.html

相关文章

Alibaba微服务组件Sentinel学习笔记

1 .Sentinel 是什么 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式服务架构的流量控制组件,主要以 流量为切入点,从限流、流量整形、熔断降级、系统负载保护、热点防护等多个维度来帮助开发者保障微服务的…

Maplab:一个用于视觉惯性建图和定位研究的开源框架

摘要 鲁棒且精确的视觉惯性估计是当今机器人领域的重要挑战。能够用先验地图(prior map)进行定位(localize)并获得准确且无漂移的姿态估计,可以推动该系统的适应性。然而,目前大多数可用的解决方案都集中在单次使用,缺乏定位能力或端到端流水…

偷偷理解Java和Scala中==和equals()的区别

君霸王,社稷定,君不霸王,社稷不定🥽 目录 Java总结 Scala总结 Java中和equals() ---------------------------------------------------------------------------------------------------------------------------------------…

Redis内部的阻塞式操作以及应对方法

Redis之所以被广泛应用,很重要的一个原因就是它支持高性能访问,也正因为这样,我们必须要重视所有可能影响Redis性能的因素,不仅要知道具体的机制,尽可能避免异常的情况出现,还要提前准备好应对异常的方案。…

eBPF 入门开发实践指南一:介绍 eBPF 的基本概念、常见的开发工具

eBPF 入门开发实践指南一:介绍 eBPF 的基本概念、常见的开发工具 1. 为什么会有 eBPF 技术? 1.1. 起源1.2. 执行逻辑1.3. 架构 1.3.1. 寄存器设计1.3.2. 指令编码格式 1.4. 本节参考文章 2. 如何使用eBPF编程编写 eBPF 程序 2.1. BCC2.2. libbpf-bootstr…

线段树学习

线段树是用来维护区间信息的数据结构 洛谷P3372 区间加区间查询 #include<cstdio>typedef long long LL; const int N 100005; LL tree[N * 4], lazy[N * 4];void push_down(int rt, int l, int r) {if (lazy[rt]) {int mid l ((r - l) >> 1);tree[rt <&l…

计算机视觉OpenCv学习系列:第八部分、图像操作-4

第八部分、图像操作-4第一节、图像卷积操作1.图像卷积定义2.卷积函数3.代码练习与测试第二节、高斯模糊1.高斯模糊2.函数解释3.代码练习与测试第三节、像素重映射1.像素重映射定义2.重映射函数3.代码练习与测试学习参考第一节、图像卷积操作 1.图像卷积定义 卷积的基本原理&am…

cmake 04 使用 python 管理 cmake 工程

本文目标 使用 python 写一个管理 cmake 工程的 cli 程序 参考 Python CLI python Click 官网 Click 中文文档 python多文件打包.exe执行文件 argparse 文档 使用说明 详细说明 思路 使用 click 制作单独的命令, 比如 mcmake_inti,mcmake_built , 每一个命令都打包为…