MATLAB实现控制系统的时域分析

简介: 目的用 MATLAB 对控制系统进行时域分析,包括典型响应、判断系统稳 定性和分析系统的动态特性。理论二、典型响应及其性能分析1、单位阶跃响应 单位阶跃响应调用格式为: (1) step(num,den) (2) step(num,den,t) (3) step(G) (4) step(G,t) 该函数将绘制出系统在单位阶跃输入条件下的动态响应图,同时给出稳态值。

目的

用 MATLAB 对控制系统进行时域分析,包括典型响应、判断系统稳 定性和分析系统的动态特性。

理论

这里写图片描述

二、典型响应及其性能分析

1、单位阶跃响应
单位阶跃响应调用格式为:
(1) step(num,den)
(2) step(num,den,t)
(3) step(G)
(4) step(G,t)
该函数将绘制出系统在单位阶跃输入条件下的动态响应图,同时给出稳态值。其中 t 为图像显示的时间长度,是用户指定的时间向量。
如果需要将输出结果返回到 MATLAB 工作空间中,则采用以下调用格式:
c=step(G)

2、求阶跃响应的性能指标
MATLAB 提供了强大的绘图计算功能,可以用多种方法求取系统的动态响应指标。
(1) 最简单的方法――游动鼠标法
在程序运行完毕后,用鼠标左键点击时域响应图线任意一点,
系统会自动跳出一个小方框, 小方框显示了这一点的横坐标 (时间)和纵坐标 (幅值)。按住鼠标左键在曲线上移动,可以找到曲线幅值最大的一点, 即曲线最大峰值,此时小方框中显示的时间就是此二阶系统的峰值时间,根据观察到的稳态值和峰值可以计算出系统的超调量。
这种方法简单易用,但同时应注意它不适用于用 plot()命令画出的图形。

(2) 用编程方式求取时域响应的各项性能指标
由上面内容可知, 用阶跃响应函数 step( )可以获得系统输出量,若将输出量
返回到变量 y 中,可以调用如下格式命令:
[y,t]=step(G)
该函数还同时返回了自动生成的时间变量 t,对返回的这一对变量 y 和 t 的
值进行计算,可以得到时域性能指标。
① 峰值时间
[Y,k]=max(y);timetopeak=t(k)
应用取最大值函数 max()求出 y 的峰值及相应的时间,并存于变量 Y 和 k 中。
然后在变量 t 中取出峰值时间,并将它赋给变量 timetopeak。
② 超调量
C=dcgain(G);[Y,k]=max(y);overshoot=100*(Y-C)/C
dcgain( )函数用于求取系统的终值,将终值赋给变量 C,然后依据超调量的
定义,由 Y 和 C 计算出超调量。

③ 上升时间
可以用 while 语句编写以下程序得到:

C=dcgain(G); n=1;
while y(n)<C
n=n+1;
end
risetime=t(n)

在阶跃输入条件下, y 的值由零逐渐增大,当以上循环满足 y=C 时,退出
循环,此时对应的时刻,即为上升时间。
对于输出无超调的系统响应,上升时间定义为输出从稳态值的 10%上升到
90%所需时间,则计算程序如下:

C=dcgain(G);n=1;
while y(n)<0.1*C
n=n+1;
end
m=1;
while y(m)<0.9*C
m=m+1;
end
risetime=t(m)-t(n)

④ 调节时间(取误差带为 0.02)
C=dcgain(G);i=length(t);
while(y(i)>0.98*C)&(y(i)<1.02*C)
i=i-1;
end
setllingtime=t(i)
用向量长度函数 length( )可求得 t 序列的长度,将其设定为变量 i 的上限值。

3、脉冲响应
脉冲响应调用格式为:
(1) impulse (num,den)
(2) impulse (num,den,t) 时间向量 t 的范围可以由人工给定(例如 t=0:0.1:10)
(3) [y,x]=impulse(num,den) 返回变量 y 为输出向量, x 为状态向量
(4) [y,x,t]=impulse(num,den,t) 向量 t 表示脉冲响应进行计算的时间

4、高阶系统的降阶处理
利用闭环主导极点的概念, 可将高阶系统进行降阶处理。
5、分析零点对系统单位阶跃响应的影响

三、系统稳定性分析
MATLAB 中有以下三种方法对系统进行稳定性分析:
1、利用 pzmap 绘制连续系统的零极点图;
2、利用 tf2zp 求出系统零极点;
3、利用 roots 求分母多项式的根来确定系统的极点

实操

这里写图片描述

这里写图片描述

2-1

clc,clear
num=[1,7,24,24];
den=[1,10,35,50,24,0];
[r,p,k]=residue(num,den) 

这里写图片描述

2-2

 clc,clear
 num=[1];
 den=[0.2,1];
 G=tf(num,den);
 t=0:0.1:4;
 subplot(2,2,1)
 step(G,t),
 grid on
 xlabel('t/s'),ylabel('c(t)'),title('单位阶跃响应曲线') 
 u1=t;
 subplot(2,2,2)
 lsim(G,u1,t),
 grid on
 xlabel('t/s'),ylabel('c(t)'),title('单位斜坡响应曲线')
 u2=(1/2)*(t.^2);
 subplot(2,2,3)
 lsim(G,u2,t),
 grid on
 xlabel('t/s'),ylabel('c(t)'),title('单位加速度响应曲线')

这里写图片描述

2-3

(1) 最简单的方法――游动鼠标法

num=[10];den=[1 2 10];G=tf(num,den),grid
title('Unit-Step Response of G(s)=10/(s^2+2s+10)')

这里写图片描述
(2) 用编程方式求取时域响应的各项性能指标

clc,clear
num=[10];den=[1 2 10];G=tf(num,den)
Wn=sqrt(10)   % 求取无阻尼振荡频率
E=1/Wn            % 求取阻尼比
[r,p,k]=residue(num,den);% 求取闭环极点
p
C=dcgain(G)   % 求取稳态值
[y,t]=step(G);
plot(t,y),grid
title('Unit-Step Response of G(s)=10/(s^2+2s+10)')
[Y,k]=max(y)  % 计算峰值、峰值时间
timetopeak=t(k)
overshoot=100*(Y-C)/C  % 计算超调量
n=1;
while y(n)<C
n=n+1;
end
risetime=t(n)    % 计算上升时间
i=length(t);
while(y(i)>0.98*C)&(y(i)<1.02*C)
i=i-1;
end
setllingtime=t(i)% 计算调节时间

2-4

1.

clc,clear
syms Wn;
num1=[1];
den1 =[1 2*0   1];
den2 =[1 2*0.1 1];
den3 =[1 2*0.2 1];
den4 =[1 2*0.3 1];
den5 =[1 2*0.4 1];
den6 =[1 2*0.5 1];
den7 =[1 2*0.6 1];
den8 =[1 2*0.7 1];
den9 =[1 2*0.8 1];
den10=[1 2*1.0 1];
den11=[1 2*2.0 1];

t=[0:0.1:10];
[y1,x,t]=step(num1,den1,t);
[y2,x,t]=step(num1,den2,t);
[y3,x,t]=step(num1,den3,t);
[y4,x,t]=step(num1,den4,t);
[y5,x,t]=step(num1,den5,t);
[y6,x,t]=step(num1,den6,t);
[y7,x,t]=step(num1,den7,t);
[y8,x,t]=step(num1,den8,t);
[y9,x,t]=step(num1,den9,t);
[y10,x,t]=step(num1,den10,t);
[y11,x,t]=step(num1,den11,t);

plot(t,y1,'-',t,y2,'--',t,y3,'--',t,y4,'--',...
    t,y5,'--',t,y6,':',t,y7,'--',t,y8,'+',...
    t,y9,'--',t,y10,'--',t,y11,'-.'),grid
xlabel('time[sec]'),ylabel('step response')

这里写图片描述

由图可知,当 =1rad/s,  分别为 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 1.0, 2.0 时的单位阶跃响应曲线中,=0.4到0.8时(‘+’线附近)性能最好。

=0时是无阻尼二阶系统,单位阶跃响应是一条平均值为1的余弦形式的等幅振荡曲线,
0<<1的范围内是欠阻尼二阶系统,随着的增大,单位阶跃响应的为衰减的余弦振荡曲线,振荡幅度逐渐减小;
=1时为临界阻尼二阶系统,单位阶跃响应没有了振荡,是一条稳态值为1的无超调单调上升的曲线;
>1时为过阻尼二阶系统,随着的增大,单位阶跃响应为上升的非振荡曲线,斜率随着的增大,逐渐减小。

在过阻尼和临界阻尼的响应曲线中,临界阻尼响应具有最短的上升时间,响应速度最快。在欠阻尼响应曲线中,阻尼比越小,超调量越大,上升时间越短,在=0.4-0.8时超调量适度,调节时间较短,故通常可在此范围内的选取。

2.

clc,clear

num1=[2.^2];
num2=[4.^2];
num3=[6.^2];
num4=[8.^2];
num5=[10.^2];
num6=[12.^2];

den1 =[1 2*0.6*2  2.^2];
den2 =[1 2*0.6*4  4.^2];
den3 =[1 2*0.6*6  6.^2];
den4 =[1 2*0.6*8  8.^2];
den5 =[1 2*0.6*10 10.^2];
den6 =[1 2*0.6*12 12.^2];


t=[0:0.1:5];
[y1,x,t]=step(num1,den1,t);
[y2,x,t]=step(num2,den2,t);
[y3,x,t]=step(num3,den3,t);
[y4,x,t]=step(num4,den4,t);
[y5,x,t]=step(num5,den5,t);
[y6,x,t]=step(num6,den6,t);

plot(t,y1,'-',t,y2,'--',t,y3,'--',...
t,y4,'--',    t,y5,'--',t,y6,':'),grid
xlabel('time[sec]'),ylabel('step response')

这里写图片描述

由图可知,当 =0.6, n 分别为 2, 4, 6, 8, 10, 12rad/s 时的单位阶跃响应曲线中,随着n的增大,上升时间越短,峰值时间越快到达,调节时间越短,性能越好。

2-5

clc,clear
num1=[16.41 16.41*1.95];
den1=[1 12 38 52 32];

num2=[1];
den2=[0.5 1 1];

t=[0:0.1:10];
[y1,x,t]=step(num1,den1,t);
[y2,x,t]=step(num2,den2,t);
plot(t,y1,':',t,y2,'--'),grid
xlabel('time[sec]'),ylabel('step response')

这里写图片描述

2-6

clc,clear
num=[1 2 3 2 1];den=[1 2 6 7 3 1];
G=tf(num,den);
pzmap(G);%利用 pzmap 绘制连续系统的零极点图;
pole=roots(den)%利用 roots 求分母多项式的根来确定系统的极点
[z,p,k]=tf2zp(num,den)%利用 tf2zp 求出系统零极点;

pole =
-0.2939 + 2.1097i
-0.2939 - 2.1097i
-1.0000 + 0.0000i
-0.2061 + 0.4218i
-0.2061 - 0.4218i
z =
-0.5000 + 0.8660i
-0.5000 - 0.8660i
-0.5000 + 0.8660i
-0.5000 - 0.8660i
p =
-0.2939 + 2.1097i
-0.2939 - 2.1097i
-1.0000 + 0.0000i
-0.2061 + 0.4218i
-0.2061 - 0.4218i
k =
1

这里写图片描述

零极点图如上图所示,由图和计算结果可知,该系统的所有极点均不具
有正实部,故系统稳定。

目录
相关文章
|
15天前
|
算法 数据可视化
基于SSA奇异谱分析算法的时间序列趋势线提取matlab仿真
奇异谱分析(SSA)是一种基于奇异值分解(SVD)和轨迹矩阵的非线性、非参数时间序列分析方法,适用于提取趋势、周期性和噪声成分。本项目使用MATLAB 2022a版本实现从强干扰序列中提取趋势线,并通过可视化展示了原时间序列与提取的趋势分量。代码实现了滑动窗口下的奇异值分解和分组重构,适用于非线性和非平稳时间序列分析。此方法在气候变化、金融市场和生物医学信号处理等领域有广泛应用。
|
1月前
|
算法
基于模糊控制算法的倒立摆控制系统matlab仿真
本项目构建了一个基于模糊控制算法的倒立摆控制系统,利用MATLAB 2022a实现了从不稳定到稳定状态的转变,并输出了相应的动画和收敛过程。模糊控制器通过对小车位置与摆的角度误差及其变化量进行模糊化处理,依据预设的模糊规则库进行模糊推理并最终去模糊化为精确的控制量,成功地使倒立摆维持在直立位置。该方法无需精确数学模型,适用于处理系统的非线性和不确定性。
基于模糊控制算法的倒立摆控制系统matlab仿真
|
16天前
|
资源调度 算法
基于迭代扩展卡尔曼滤波算法的倒立摆控制系统matlab仿真
本课题研究基于迭代扩展卡尔曼滤波算法的倒立摆控制系统,并对比UKF、EKF、迭代UKF和迭代EKF的控制效果。倒立摆作为典型的非线性系统,适用于评估不同滤波方法的性能。UKF采用无迹变换逼近非线性函数,避免了EKF中的截断误差;EKF则通过泰勒级数展开近似非线性函数;迭代EKF和迭代UKF通过多次迭代提高状态估计精度。系统使用MATLAB 2022a进行仿真和分析,结果显示UKF和迭代UKF在非线性强的系统中表现更佳,但计算复杂度较高;EKF和迭代EKF则更适合维数较高或计算受限的场景。
|
1月前
|
算法 Perl
【光波电子学】基于MATLAB的多模光纤模场分布的仿真分析
本文介绍了基于MATLAB的多模光纤模场分布仿真分析,详细阐述了多模光纤的概念、实现方法、仿真技术,并利用模式耦合方程分析方法,通过理论和仿真模型设计,展示了不同模式下的光场分布及其受光纤参数影响的分析结果。
28 4
【光波电子学】基于MATLAB的多模光纤模场分布的仿真分析
|
3天前
|
算法 数据挖掘 vr&ar
基于ESTAR指数平滑转换自回归模型的CPI数据统计分析matlab仿真
该程序基于ESTAR指数平滑转换自回归模型,对CPI数据进行统计分析与MATLAB仿真,主要利用M-ESTAR模型计算WNL值、P值、Q值及12阶ARCH值。ESTAR模型结合指数平滑与状态转换自回归,适用于处理经济数据中的非线性趋势变化。在MATLAB 2022a版本中运行并通过ADF检验验证模型的平稳性,适用于复杂的高阶自回归模型。
|
1月前
|
算法 测试技术 SoC
基于直流潮流的IEEE30电力系统停电分布及自组织临界性分析matlab仿真
本研究提出一种基于直流潮流的算法来分析电力系统的停电分布及自组织临界性。算法迭代更新参数并模拟线路随机断开,运用粒子群优化计算关键值,并评估线路接近容量极限的概率。通过改变参数β和μ,分析不同线路可靠性和容量增加方式下的停电分布,并探索系统趋向临界状态的过程及停电概率分布。该方法基于IEEE30测试系统,利用MATLAB2022a实现,简化处理有功功率流动,适用于评估电力系统稳定性及预防大规模停电事故。
|
1月前
|
算法
蜂窝网络下行链路的覆盖率和速率性能matlab仿真分析
此程序在MATLAB2022a环境下运行,基于随机几何模型评估蜂窝网络的下行链路覆盖率和速率性能。通过模拟不同场景下的基站(BS)配置与噪声情况,计算并绘制了各种条件下的信号干扰加噪声比(SINR)阈值与覆盖率概率的关系图。结果显示,在考虑噪声和不同基站分布模型时,覆盖率有显著差异,提出的随机模型相较于传统网格模型更为保守但也更加贴合实际基站的分布情况。
|
1月前
|
算法
基于matlab的风力发电系统建模与详细性能仿真分析
本研究介绍风力发电原理与系统模型,使用MATLAB 2022a进行性能仿真。风力通过风轮转化为电能,涉及贝努利定理及叶素理论。仿真展示了风速与输出功率间的关系,包括风电利用系数、切入切出控制与MPPT控制效果。当风速超过25m/s时,系统自动停机保护设备。MPPT算法确保了在变化风速下获得最大功率。
|
1月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
106 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
1月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
82 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现

热门文章

最新文章