MATLAB《自动控制原理》相关编程

传递函数表示

显示多项式传递函数

matlab语句:分子分母的各项式系数按照降次排序分别计入
num=[ ],den=[ ]中,缺项系数补零。
传递函数 sys=tf(num,den)

程序

clc;
clear all;
close all;
num = [13 4  0 6];
den = [5 3 16 1 7];
sys = tf(num,den)
G = tf(num,den)

结果

因子形式的传递函数

matlab语句:利用conv()实现两个多项式降次系数乘积运算。

程序

clc;
clear all;
close all;
num = conv([1 3],[1 7 6]);
den = conv([1 1],[1 3 0 5]);
sys = tf(num,den)
G = tf(num,den)

结果

显示零极点式传递函数


matlab语句:zpk()函数用法。z=[ ]输入零点 ,p=[ ]输入极点;k =[ ]输入增益。
sys=zpk(z,p,k);

程序

clc;
clear all;
close all;
z = [-3];
p = [-2 -4 -5];
k = 7;
sys = zpk(z,p,k)

结果

直接传递函数输入

matlab语句:s=tf(‘s’);

程序

clc;
clear all;
close all;
s = tf('s');
sys = 1/(s*(s+1)*(s+2))

结果


传递函数多项式形式和零极点形式的转换

1零极点形式转换为多项式形式

zp2tf函数

程序

clc;
clear all;
close all;
z=[-7,-2]';
p=[-3,-5,-9]';
k=4 ;
spk=zpk (z, p,k) 
[num, den]=zp2tf(z,p,k) 
stf=tf(num, den)

2多项式形式转换为零极点形式

tf2zp()函数

程序

clc;
clear all;
close all;
num=[4,36,56];
den=[1,17,87,135];
stf=tf(num, den) 
[z, p,k]=tf2zp(num, den) ;
spk=zpk(z,p, k)

结果


求系统的单位冲击响应和单位阶跃响应

1单位冲激响应

impulse函数

impulse函数可以求得系统的单位冲击响应,参数为sys和t,其中sys为系统对应的微分方程,t为持续时间.

sys变量由tf函数生成,其参数为输入部分的方程系数矩阵和响应部分的方程系数矩阵.

使用格式:
impulse(sys);
impulse(sys, t);

程序

clc;
clear all;
close all;
sys = tf([2, 1],[1, 4, 3]);
t = 0:0.1:10;
y = impulse(sys, t);
plot(t, y);
figure;
impulse(sys)

结果

2单位阶跃响应

step函数可以求得系统的单位阶跃响应,其用法与impulse函数类似.

step:动态系统的阶跃响应绘图。

具体描述:
1.step:计算一个动态系统的阶跃响应。在状态空间的情况下,假定初始状态为零。
当它没有输出参数时,调用这个函数在屏幕上的画出阶跃响应。
2.step(sys):画出任意一个动态系统模型sys的阶跃响应。这个模型可以是连续的或离散的,和
单输入单输出或多输入多输出。多端输入系统的阶跃响应对于每一个输入方式来说都是阶跃响应的集合。
模拟持续的时间根据系统的极点和零点自动地被确定。
3.step(sys,Tfinal):模拟了系统sys从时间t=0到t=Tfinal的阶跃响应。在系统时间单位中,表达式Tfinal
在sys的时间单位属性中是被指定的。对于未指定采样时间(Ts=1)的离散时间系统,阶跃将Tfinal作为
采样周期的数量来模拟。
4.step(sys,t):使用用户提供的时间矢量t来模拟。在系统时间单位中,表达式t在sys的时间单位属性
中是指定的。对于离散时间模型,t应该是Ti:Ts:Tf,这里Ts是采样时间。对于持续的时间模型,t应该
是Ti:dt:Tf,这里dt变成近似于持续系统的一个离散采样。阶跃命令总是适用于在t=0时的阶跃输入,
而忽视Ti。
5.在一个图上画出一系列模型sys1,sys2,...sysN的阶跃响应:
step(sys1,sys2,...,sysN);
step(sys1,sys2,...,sysN,Tfinal);
step(sys1,sys2,...,sysN,t);
所有将被画在一个图上的系统必须有相同数量的输入和输出。当然也可以在一个单一的图上画连续
时间系统和离散时间系统的混合。这个语法对于比较多个系统的阶跃响应是有用的。
6.你也可以给每个系统指定一个独特的颜色,线型,标记,或者三者都有。例如:
step(sys1,'y:',sys2,'g--');当调用输出参数时:
y = step(sys,t);
[y,t] = step(sys);
[y,t] = step(sys,Tfinal);
[y,t,x] = step(sys);
step返回输出响应y,模拟时间向量t(如果没有作为一个输入参数被提供)和状态轨迹x(仅为状态空间模型)。
在屏幕上没有绘图生成。对于单输入系统来说,y有和采样时间一样多的行,和输出一样多的列。
在多端输入的情况下,每个输入方式的阶跃响应沿着输出y的第三个维度被累积起来。

程序

clc;
clear all;
close all;
sys = tf([2, 1], [1, 4, 3]);
t = 0:0.1:10;
y = step(sys, t);
plot(t, y);
figure;
step(sys)

结果

3求系统的阶跃响应动态指标

实例程序

clc;%清除命令行空间
clear all;%清除变量
close all;%关闭图像
num = 6;%传递函数分子
den= conv(conv([1 0],[0.1 1]),[0.3 1]);
sys=tf(num,den)%开环传递函数
sysc = feedback(sys,1,-1)%系统闭环传递函数
figure;%新建一个窗口
bode(sys);%画Bode图
margin(sys)% 画出bode所有参数
figure;%新建一个窗口
step(sysc)%闭环系统阶跃响应曲线
[y, t, x]=step(sysc);
mp=max(y);
% 上升时间
tr = 0.518
%峰值时间
tp=spline(y, t, mp)
cs=length(t);
%稳态值
yss=y(cs)
%稳态误差值
ess = 1 -yss
%超调量
ct=(mp - yss)/yss

结果


零极点分布图、根轨迹图、奈奎斯特曲线图、bode图

1、零极点分布图和根轨迹图

零极点分布图 pzmap()函数

根轨迹图 rlocus()函数


结果

2奈奎斯特曲线图

奈奎斯特曲线图 nyquist() 函数


3伯德图

伯德图bode()和margin()函数
[Lg,Y,Wg,Wc]=margin(G)%四者分别为幅值裕度、相位裕度、相位穿越频率、截止频率

程序

clc;
clear all;
close all;
num = [13 4  0 6];
den = [5 3 16 1 7];
sys = tf(num,den);
G = tf(num,den)
figure;
pzmap(G,'r')%画图
figure;
rlocus(G)
figure;
nyquist(G)
figure;
bode(G)
margin(G);
[Lg,Y,Wg,Wc]=margin(G)
%四者分别为幅值裕度、相位裕度、相位穿越频率、截止频率
%相位裕度:对于闭环稳定系统,如果系统开环相频特性再滞后Y 度,则系统将处于临界稳定状态
%相位穿越频率:系统开环频率特性上相位等于-180度时所对应的角频率称为相位穿越频率
%截止频率:系统开环频率特性上幅值为1时所对应的角频率称为幅值穿越频率或截止频率

结果如上四个图


本文内容来源于网络,仅供参考学习,如内容、图片有任何版权问题,请联系处理,24小时内删除。


作 者 | 郭志龙
编 辑 | 郭志龙
校 对 | 郭志龙

展开阅读全文

页面更新:2024-03-26

标签:开环   多项式   相位   自动控制   极点   函数   频率   原理   单位   时间   程序   系统

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top