1.传递函数的TF式和ZPK式
单输入单输出线性定常动态对象的传递函数G(s)是零初值下该对象的输出量的拉普拉斯变换C(s)与输入量的拉普拉斯变换R(s)之比。
TF式与ZPK式代表着一个传递函数的两种表达方式。
%零极点传递函数
Z=[]; %零点
P=[0,0,-1]; %极点
K=1; %增益
Gzpk=zpk(Z,P,K);
G=tf(Gzpk);
运行结果:
%多项式传递函数
num=[0,1]; %分子的系数
den=[1,2,1]; %分母的系数
G=tf(num,den);
Gzpk=zpk(G);
运行结果:
2.求解拉普拉斯变换——laplace()函数
拉氏变换法是一种数学积分变换,其核心是把时间函数f(t)与复变函数F(s)联系起来,把时域问题通过数学变换为复频域问题,把时间域的高阶微分方程变换为复频域的代数方程以便求解。
% 1 %求解拉普拉斯变换
syms t; %使用syms 定义变量
x = t+1; %x(t)表达式
X = laplace(x); %x(t)拉普拉斯变换得到X(s)
pretty(X);
运行结果:
3.求解拉普拉斯逆变换——ilaplace()函数
syms s;
F1 =(2*s*s+12*s+6)/(s*(s+2)*(s+3));
f1 = ilaplace(F1);
disp(f1); %显示f1表达式
输出结果:5*exp(-2*t) - 4*exp(-3*t) + 1
4.求解高次方程的解(可用于求解零极点)——solve()函数
syms y s kg;
y=0.5*s^2+s+1; %方程输入
c=solve(y==0,s); %解方程
a=double(c);
a
输出结果:
5.展开多项式——expand()函数
syms y s kg z k1 k2; %定义多个可能需要展开的变量,例如s,kg等
y=(k1+k2)^2*(3*k1+3*k2+1)-4*k1*k2;
a=expand(y);
pretty(a);
a
运行结果:
6.求解闭环传递函数零极点分布图分析系统稳定性——pzmap()函数
num=[-3,4,2];%分子的系数
den=[1,3,1,6];%分母的系数
sys=tf(num,den);
figure(2);pzmap(sys);
输出结果:
7.求单位阶跃响应——step()函数
单位阶跃响应是指系统在单位阶跃信号的作用下所产生的零状态响应。
第一个参数G为传递函数,第二个参数代表需要显示的图像横坐标长度。
num=[0.1,0.2];%分子的系数
den=[1,1,1];%分母的系数
G=tf(num,den);
G
step(G,20);% 动态响应的幅值赋给变量c
Css=dcgain(G);
输出结果:(其中稳态值Css=0.2)
8.计算动态性能——tp、超调量、tr、ts
上升时间 tr:响应曲线从零首次上升到稳态值h(∞)所需的时间,称为上升时间。若响应曲线无振荡的系统,tr是响应曲线从稳态值的10%上升到90%所需的时间。
滞后时间 td:响应曲线第一次到达终值一半所需的时间。
峰值时间 tp:响应曲线超过稳态值h(∞)达到第一个峰值所需的时间。
调节时间 ts:在稳态值h(∞)附近取一误差带,通常取响应曲线开始进入并保持在误差带内所需的最小时间,称为调节时间。
超调量 σ%: 响应曲线超出稳态值的最大偏差与稳态值之比。
%零极点传递函数
% Z=[];
% P=[0,0,-1];
% K=1;
% Gzpk=zpk(Z,P,K);%必须是闭环传递函数,默认求阶跃响应,若要求斜坡则多乘以一个1/s,求加速度,则乘以1/s^2
% G=tf(Gzpk); %单位反馈,单位阶跃单位斜坡,单位加速度
%多项式传递函数
num=[0,1];%分子的系数
den=[1,2,1];%分母的系数
G=tf(num,den);%必须是闭环传递函数,默认求阶跃响应,若要求斜坡则多乘以一个1/s,求加速度,则乘以1/s^2
Gzpk=zpk(G); %单位反馈,单位阶跃单位斜坡,单位加速度G
Gzpk
%用结构图
G1=tf([0,1,5],[1,1,6]);
G2=tf([1,5],[1,0]);
H=tf([0,1],[0.01,1]);%反馈通路
G=feedback(G1*G2,H);
%有超调的响应求取
step(G,10);
C=dcgain(G); %C为稳态值
[y,t]=step(G);
plot(t,y)
[Y,k]=max(y);
timetopeak=t(k); %timetopeak峰值时间
percentovershoot=100*(Y-C)/C; %percentovershoot超调量
n=1;
while y(n)<C
n=n+1;
end
risetime=t(n); %risetime上升时间
i=length(t);
while(y(i)>0.98*C)&&(y(i)<1.02*C) %误差为2%
i=i-1;
end
setllingtime=t(i); %setllingtime调节时间
%无超调的响应求取
% step(G);
% [y,t]=step(G);
% grid
% 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); %risetime上升时间
% i=length(t);
% while(y(i)>0.98*C)&&(y(i)<1.02*C)
% i=i-1;
% end
% setllingtime=t(i); %setllingtime调节时间
运行结果: