【控制理论】控制系统中的Matlab仿真、编程与函数合集

简介: 控制原理中的Matlab仿真与函数合集

控制原理中Matlab仿真与函数合集

1 基本模型

1.1 传递函数模型(tf)

1.1.1 tf(num,den)

1.2 状态空间模型(ss)

1.2.1 ss(A,B,C,D)

1.2.2 ssdata(sys)

1.2.3 canon(sys)

1.3 零极点模型(zpk)

1.3.1 pzmap(sys)

1.4 模型间的转换

1.4.1 ss2tf(sys)/tf2ss(sys)

1.4.2 tf2zp(sys)/zp2tf(sys)

2 时域分析法

2.1 时域响应

2.2 根轨迹法

3 频域分析法

3.1 伯德图

3.2 奈奎斯特图

4 状态空间分析法

4.1 求状态转移矩阵

4.2 可控性可观性分析

5 非线性分析

5.1 相平面图

6 常用的工程数学函数

6.1 矩阵运算

6.1.1 矩阵求逆inv(A)

6.1.2 矩阵行列式det(A)

6.1.3 矩阵特征分解eig(A)

6.1.4 矩阵秩rank(A)

6.2 积分变换

6.2.1 拉氏变换与反拉式变换laplace()/ilaplace()

1 基本模型

1.1 传递函数模型(tf)

1.1.1 tf(num,den)

num,den分别表示分子、分母多项式。可以用**conv()**耦合两个多项式,例如:conv([1,1,0],[1,2])表示

( s 2 + s ) ( s + 2 ) (s^2+s)(s+2)

(s

2

+s)(s+2)

1.2 状态空间模型(ss)

1.2.1 ss(A,B,C,D)

A,B,C,D分别是状态空间模型的系统矩阵、输入矩阵、输出矩阵和直连矩阵。

A=[1 0;1 1];
B=[1 1]';         %转置
C=[1 1];
D=0;
sys = ss(A,B,C,D);      %sys即为状态空间表述
1.2.2 ssdata(sys)

从状态空间模型提取状态矩阵

[A,B,C,D]=ssdata(sys)   %sys即为状态空间表述
1.2.3 canon(sys)

将状态空间模型标准化。

A=[1 0;1 1];
B=[1 1]';         %转置
C=[1 1];
D=0;
sys = ss(A,B,C,D);      %sys即为状态空间表述
sys_can = canon(sys)    %sys_can即为标准化状态空间模型
%[A_,B_,C_,D_]=ssdata(sys_can)%可以提取新的矩阵

1.3 零极点模型(zpk)

1.3.1 pzmap(sys)

绘制系统的零极点图,零点用o表示,极点用x表示。

1.4 模型间的转换

1.4.1 ss2tf(sys)/tf2ss(sys)

状态空间模型与传递函数模型的相互转换。

1.4.2 tf2zp(sys)/zp2tf(sys)

传递函数模型与零极点模型的相互转换。


2时域析法

2.1 时域响应

单位阶跃响应

y=step(num,den,t) %时间向量t=[0:step:end]

[y,x,t]=step(num,den) %传递函数模型:时间向量t由系统自动生成

[y,x,t]=step(A,B,C,D,iu) %状态方程模型

上述使用方法去掉等号及等号左边的变量,step()函数可以直接画出阶跃响应曲线

单位冲激响应

y=impulse(num,den,t) %时间向量t=[0:step:end]

[y,x,t]=impulse(num,den) %传递函数模型:时间向量t由系统自动生成

[y,x,t]=impulse(A,B,C,D,iu) %状态方程模型

上述使用方法去掉等号及等号左边的变量,impulse()函数可以直接画出阶跃响应曲线

任意输入响应

lsim(sys_1,u,t)

lsim(sys_2,u,t,x_0)

[y,T,x]=lsim(sys_1,u,t)

[y,T,x]=lsim(sys_2,u,t,x_0)

其中,u 为输入信号,x_0 为初始条件,t 为时间向量,sys_1为时域模型,sys_2 为状态空间模型,y为响应输出,T为仿真时间,x为系统状态变量。

A=[1 0;1 1];
B=[1 1]';
C=[1 1];
D=0;
sys = ss(A,B,C,D);
x_0 = [1 0]';
t=[0:0.01:2];
u=heaviside(t);
[y,T,x]=lsim(sys,u,t,x_0);
plot(t,y);      %输出响应曲线

2.2 根轨迹法

rlocus(sys)可以画出系统根轨迹

3 频域分析法

3.1 伯德图

bode(num,den) % 绘制bode图

[mag pha] = bode(num,den) %mag、pha是bode图的幅值和相位函数

margin(num,den) %计算连续系统的幅值裕度和相角裕度,并绘制bode图

[gm,pm,wcp,wcg] = margin(num,den) % 计算幅值裕度、相角裕度及对应的穿越频率

3.2 奈奎斯特图

nyquist(num,den) %求连续系统的奈奎斯特曲线

4 状态空间分析法

4.1 求状态转移矩阵

syms s;
A=[1 0;1 1];
I=[1 0;0 1];
fai = ilaplace(inv(s*I-A));

4.2 可控性可观性分析

QC = ctrb(A,B);     %获得可控性矩阵
QO = obsv(A,C);     %获得可观性矩阵
%再求两阵的秩即可判断可控性、可观性
[Ac,Bc,Cc,Tc,Kc]=ctrbf(A,B,C) %可控性分解 
%将系统分解为可控子系统和不可控子系统,Tc是变换阵,sum(Kc)是可控状态的数目
[Ao,Bo,Co,To,Ko]=cbsvf(A,B,C)   %可观性分解
将系统分解为可观测子系统和不可观测子系统,Tc是变换阵,sum(Ko)是可观测状态的数目

5 非线性分析

5.1 相平面图

[tout,yout] = ode45(function,[t0,tf],y0)


其中yout是解向量,与时间向量tout一一对应;function是函数句柄,内部包含非线性微分方程;t0, tf是初始时间与终止时间;y0是微分方程的初始条件。


e.g. x ¨ + x ˙ + ∣ x ∣ = 0 \ddot{x}+\dot{x}+\left| x \right|=0

x

¨

+

x

˙

+∣x∣=0

diff_eqn.m
function sys = diff_eqn(t,x)
sys = [x(2);-x(2)-abs(x(1))];
end
main.m
[t,x] = ode45('diff_eqn',[0,9],[-5,11]);
plot(x(:,1),x(:,2));


image.png

6 常用的工程数学函数

6.1 矩阵运算

6.1.1 矩阵求逆inv(A)
6.1.2 矩阵行列式det(A)
6.1.3 矩阵特征分解eig(A)

[V,D]=eig(A):求矩阵A的全部特征值,构成对角阵D,并求A的特征向量构成V的列向量

6.1.4 矩阵秩rank(A)

6.2 积分变换

6.2.1 拉氏变换与反拉式变换laplace()/ilaplace()

此文档将随着学习过程,不断更新。

目录
相关文章
|
2天前
|
算法
基于排队理论的客户结账等待时间MATLAB模拟仿真
本程序基于排队理论,使用MATLAB2022A模拟客户结账等待时间,分析平均队长、等待时长、不能结账概率、损失顾客数等关键指标。核心算法采用泊松分布和指数分布模型,研究顾客到达和服务过程对系统性能的影响,适用于银行、超市等多个领域。通过仿真,优化服务效率,减少顾客等待时间。
|
3天前
|
机器学习/深度学习 数据采集 算法
基于GWO灰狼优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
本项目基于MATLAB2022a,展示了时间序列预测算法的运行效果(无水印)。核心程序包含详细中文注释和操作视频。算法采用CNN-GRU-SAM网络,结合灰狼优化(GWO),通过卷积层提取局部特征、GRU处理长期依赖、自注意力机制捕捉全局特征,最终实现复杂非线性时间序列的高效预测。
|
1天前
|
算法
基于SOA海鸥优化算法的三维曲面最高点搜索matlab仿真
本程序基于海鸥优化算法(SOA)进行三维曲面最高点搜索的MATLAB仿真,输出收敛曲线和搜索结果。使用MATLAB2022A版本运行,核心代码实现种群初始化、适应度计算、交叉变异等操作。SOA模拟海鸥觅食行为,通过搜索飞行、跟随飞行和掠食飞行三种策略高效探索解空间,找到全局最优解。
|
1天前
|
算法 数据可视化 数据安全/隐私保护
一级倒立摆平衡控制系统MATLAB仿真,可显示倒立摆平衡动画,对比极点配置,线性二次型,PID,PI及PD五种算法
本课题基于MATLAB对一级倒立摆控制系统进行升级仿真,增加了PI、PD控制器,并对比了极点配置、线性二次型、PID、PI及PD五种算法的控制效果。通过GUI界面显示倒立摆动画和控制输出曲线,展示了不同控制器在偏转角和小车位移变化上的性能差异。理论部分介绍了倒立摆系统的力学模型,包括小车和杆的动力学方程。核心程序实现了不同控制算法的选择与仿真结果的可视化。
27 14
|
6月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
272 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
6月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
162 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
6月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
138 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
|
9月前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
基于混合整数规划的微网储能电池容量规划(matlab代码)
基于混合整数规划的微网储能电池容量规划(matlab代码)
|
9月前
|
算法 调度
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)