【控制理论】控制系统中的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()

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

目录
相关文章
|
7天前
|
5G
基于IEEE 802.11a标准的物理层MATLAB仿真
基于IEEE 802.11a标准的物理层MATLAB仿真
65 0
|
13天前
|
算法
基于MATLAB/Simulink平台搭建同步电机、异步电机和双馈风机仿真模型
基于MATLAB/Simulink平台搭建同步电机、异步电机和双馈风机仿真模型
|
18天前
|
机器学习/深度学习 算法 数据可视化
基于MVO多元宇宙优化的DBSCAN聚类算法matlab仿真
本程序基于MATLAB实现MVO优化的DBSCAN聚类算法,通过多元宇宙优化自动搜索最优参数Eps与MinPts,提升聚类精度。对比传统DBSCAN,MVO-DBSCAN有效克服参数依赖问题,适应复杂数据分布,增强鲁棒性,适用于非均匀密度数据集的高效聚类分析。
|
18天前
|
开发框架 算法 .NET
基于ADMM无穷范数检测算法的MIMO通信系统信号检测MATLAB仿真,对比ML,MMSE,ZF以及LAMA
简介:本文介绍基于ADMM的MIMO信号检测算法,结合无穷范数优化与交替方向乘子法,降低计算复杂度并提升检测性能。涵盖MATLAB 2024b实现效果图、核心代码及详细注释,并对比ML、MMSE、ZF、OCD_MMSE与LAMA等算法。重点分析LAMA基于消息传递的低复杂度优势,适用于大规模MIMO系统,为通信系统检测提供理论支持与实践方案。(238字)
|
29天前
|
存储 编解码 算法
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
|
29天前
|
机器学习/深度学习 传感器 算法
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
150 14
|
24天前
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
|
24天前
|
机器学习/深度学习 算法 安全
【图像处理】使用四树分割和直方图移动的可逆图像数据隐藏(Matlab代码实现)
【图像处理】使用四树分割和直方图移动的可逆图像数据隐藏(Matlab代码实现)
107 2
|
24天前
|
canal 算法 vr&ar
【图像处理】基于电磁学优化算法的多阈值分割算法研究(Matlab代码实现)
【图像处理】基于电磁学优化算法的多阈值分割算法研究(Matlab代码实现)
|
29天前
|
机器学习/深度学习 算法
【概率Copula分类器】实现d维阿基米德Copula相关的函数、HACs相关的函数研究(Matlab代码实现)
【概率Copula分类器】实现d维阿基米德Copula相关的函数、HACs相关的函数研究(Matlab代码实现)

热门文章

最新文章