0
点赞
收藏
分享

微信扫一扫

MATLAB控制系统仿真与CAD

Alex富贵 2022-01-13 阅读 74

CACSDC:韩京清

Simscape工具

MATLAB语言的变量名规则

由一个字母引导,后面可以为其他字符,区分大小写,不能有变量前置下划线_

eps:判零的误差限,i和j表示虚数的单位

MATLAB将数据转化为双精度的数据结构,而后转化为符号型的数据结构

改进方法:使用单引号转化为字符串(C语言使用双引号)

符号性数据结构syms,sym,vpa

MATLAB的基本语句结构

保留变量:ans

存放最近一次无赋值变量语句的运算结果

MATLAB支持的结构

for循环结构(类似于C语言)

累加函数(从1加到100)

sum(1:100)

向量化编程

tic与toc:计算耗时

conv()计算两个多项式的积

伪代码语句

pcode (不可逆)

已知数据绘图:plot(t, y)

已知函数绘图:fplot(f,[xm,xM])

例:

>> x=[-pi:0.05:pi]
>> y=sin(tan(x))-tan(sin(x))
>> plot(x,y)

或使用已知函数绘图:

>> syms x; y=sin(tan(x))-tan(sin(x)); fplot(y, [-pi,pi])

分段函数

函数体.*条件

(在进行矩阵之间的运算时“.”和“”的意义就有所不同了。假设a,b表示两个矩阵,a*b表示矩阵a与矩阵b进行矩阵相乘,a.*b表示矩阵a中的元素与矩阵b中的元素按位置依次相乘,得到的结果将作为新矩阵中相同位置的元素。)

bar(x, y):绘制直方图

极坐标绘图:

例:

>> theta=0:0.01:6*pi
>> rho=5*sin(4*theta/3)
>> polarplot(theta,rho)

窗口分割:

subplot(line, column, number)

隐函数绘制:

fimplicit(im_function, [start, end])

save和load命令存储和读取数据

xlsread函数调用实现于Excel的交互

三维图形的绘制

plot3(x, y, z)

绘制三维轨迹图:comet3

注意a的b次方一定要用点运算:a.^b

一般曲面绘制:[x, y] = meshgrid(v1, v2)

meshgrid用于生成网格采样点的函数

surf()表面图

mesh()网格图

三维图形视角设置

命令语句:

view(alpha, beta)

alpha定义为方位角,beta定义为仰角

面向对象程序设计

窗口对象的常用属性

生成两个文件:.fig文件用于描绘图形界面属性,.m文件用于空白的框架

把图形界面画出来并设置好对应的属性

绘制Bode图

guide可以设计图形菜单系统

ActiveX控件

线性代数问题求解:

稳定性可以通过矩阵特征值求解

系统可控性、可观测性可以求矩阵的秩

线性相似变换需要求解矩阵的逆和惩罚

状态方程解析解需要矩阵的指数函数等

矩阵的迹:对角元素的和(trace(A))

矩阵的秩:矩阵列向量中线性无关的最大列

矩阵的范数:用一个数表示矩阵的大小(norm(A))

特征多项式:ploy(A)

特征根求解:

r=roots(p), r=eig(A), [V, D]=eig(A)

(V表示的是特征向量,D表示的是特征值)

多项式求值:C=polyval(a, x)

多项式矩阵求值:C=polyvalm(a, A)

矩阵的逆:inv(A)

Moore-Penrose广义逆(伪逆)min||AM-I||

矩阵的伪逆:pinv(A)

矩阵的三角分解(LU分解):LU=lu(A)

eye()生成单位矩阵

例:

>> syms a b c;A=[1,1,1;a,b,c;a^2,b^2,c^2];
>> det(A);simplify(factor(ans))   % simplify函数可以对符号表达式进行简化
>> B=inv(A);simplify(B*A-eye(3))   % A乘以A的逆矩阵结果为单位阵,减去单位阵恰好等于零
>> p=charpoly(A)

矩阵的指数函数:expm(A)

注意方程式内的变量要声明为符号变量sym(A)

线性方程的求解

AX=B X=inv(A)*B
null(A)   % 得出A矩阵的化零空间(基础解系)
pinv(A)   % 特解

如果无解则使用最小二乘的方法得出近似解

基本行变换求解:rref()函数

通过求伪逆的方式(奇异矩阵或非方阵的矩阵不存在逆矩阵)

微分方程求解方法

连续系统一般是由微分方程解出

一阶显式微分方程的数值解法

微分方程数值解算法

步骤:

将微分方程变换成标准型

用MATLAB描述微分方程

  • 函数或匿名函数(f=@(t,x)[…])

求解:

[t,x]=ode45()

验证:odeset()函数

例:非线性微分方程

变换x1=x, x2=y, x3=z

>> [f=@(t,x)[-x(2)-x(3);x(1)+0.2*x(2);0.2+(x(1)-5.7)*x(3)];](mailto:f=@(t,x)[-x(2)-x(3);x(1)+0.2*x(2);0.2+(x(1)-5.7)*x(3)];)

高阶微分方程变换

注意:一定要转换成标准型,即x=[]矩阵

x与x的导数的曲线:相轨迹曲线(增大到某一个封闭的曲线就是极限环)

数值求解方法:

描述微分方程(不能用匿名函数)

微分方程检验:odeset

RelTol:[]相对误差限(默认值为千分之一)

微分方程的解析解:

注:solve() 函数是用于求解代数方程的

D?y 表示y的?阶导数,或者是实用diff命令来求导

simplify() % 化简结果

最优化问题

无约束最优化问题求解

求解步骤:

写标准型

描述目标函数:M-函数或匿名函数

直接求解(边界约束求解fminsearchbnd())

有约束最优化问题求解

fmincon() 函数

注意分清楚哪个是目标函数哪个是约束条件,哪个是目标函数

约束条件要转化为小于等于零的不等式

使用 fmincon() 函数返回的前两个量第一个是

线性规划、二次型规划等其他最优化规划问题

全局最优解的尝试

可以使用进化类算法求解,如遗传算法等

最优曲线拟合

lsqcurvefit()

Laplace变换与Z变换

数学基础:t域到s域的变换

正变换和反变换

>> syms a t, f=1-(1+a*t)*exp(-a*t);
>> laplace(f)

如果得不到拉氏变换或者拉氏反变换的解析解,可以采用数值解的方式

无理系统的闭环阶跃响应

阶跃响应计算:没有解析解,必须求数值解

Z变换与反变换

Z变换采用求和而不是积分

把时间序列变成Z域的函数(正变换)

反变换

ztrans()
iztrans()

线性控制系统的建模实例

系统数学模型的分类

传递函数、状态方程、时间延迟、采样周期

连续系统模型的输入

线性系统的常系数线性常微分方程模型:

如果ai和bi都是常数,则系统又称为定长系统

m<=n,则为物理可实现系统

传递函数的MATLAB表示

传递函数即放大倍数:G(s)=Y(s)/U(s)

MATLAB的传递函数对象

传递函数对象属性:新版本get(tf)

传递函数属性修改

G.ioDelay=3

set(G, ‘ioDelay’, 3)

传递函数参数提取

由于使用单元数组,直接用G.num不行

将数值提取出来,之后调用tfdata即可显示分子分母多项式

传递函数输入小结

传递函数的定义与两种输入方法

  1. 调用tf函数直接输入
  2. 定义s算子,再输入传递函数

可以提取传递函数的分子与分母tfdata

状态方程模型

注意:这里必须是物理可实现系统(即t时刻的输出不能由t往后的时间输入决定)

一些特殊线性模型不存在状态方程

引入描述符系统

(若物理可实现系统,则E为单位阵)

MATLAB输入方法:ss(A, B, C, D)

通过调用ss函数,构造状态方程对象

带时间延迟的状态方程

线性系统的零极点模型

离散模型输入方法

离散模型有自己的采样周期,而连续系统的采样周期是零

举报

相关推荐

0 条评论