目录
- MATLAB Mobile的安装与使用
- 基本函数
- S变换与Z变换
- Jury判据
- Routh判据
- 离散系统的动态性能分析
- 根轨迹分析
MATLAB Mobile的安装与使用
安装与使用:
App Store - MATLAB Mobile - 安装
文件 - 新建脚本 - m文件;命令 - 命令行
(脚本示例如上图)
(命令行示例如上图)
-
创建Mathworks账户
最好用电脑创建账户,直接浏览器搜索Mathworks进入官网创建即可。 -
安装Control System Toolbox
Control System Toolbox的功能很强大,为系统化地分析、设计和调节线性控制系统提供算法和应用程序。
由于我们在电脑上基本安装的都是破解版的MATLAB,所以我们自己创建的Mathworks账户都是没有关联许可证的,也就无法安装toolbox。有一个解决方法是,直接浏览器搜索 Control System Toolbox,进入官网点击“试用软件”,安装后可免费使用30天。这样,就能在手机上使用tf、c2d等函数了。
基本函数
- 在MATLAB中表示Z传递函数
%% 返回脉冲传递函数,Hd = tf(num,den,Ts),Ts = -1时,表示采样周期未定义
Hd = tf([0.01 0.03 -0.07], [1 -2.7 2.42 -0.72],-1);
- 离散zero/pole/gain模型与Z传递函数的形式转换
%% z传递函数的形式转换,多项式形式转换为零极点形式
Hd = tf(10,[1 1 0],-1);
Hd = zpk(Hd);
% z传递函数的形式转换,零极点形式转换为多项式形式
Hd = tf(Hd);
S变换与Z变换
MATLAB函数:
- 例1:求 1 s ( s + 1 ) \frac{1}{s(s+1)} s(s+1)1 的Z变换
hc = tf(1,[1,1,0]);
hd = c2d(hc,1,'imp'); % Ts = 1,'imp'表示脉冲响应不变法,即直接z变换
结果如图:
- 例2:含零阶保持器
MATLAB程序中令K = 1:
hc = tf(1,[1,1,0]);
hd = c2d(hc,1); % Ts = 1, method 默认为‘zoh’
结果如图:
Jury判据
disp('利用朱利判据判断离散系统的稳定性')
disp('请输入特征方程的系数矩阵A')
A=input('A=');
n=size(A,2);%截取A的维数
for i=n:-1:1
disp(A);%显示奇数行
if i==1
if A(:)>0
disp('系统稳定');
else
disp('系统不稳定');
end
break;
end
B=flip(A);
disp(B);%显示偶数行
if A(1,1)<=0
disp('首元素非正!系统不稳定');
break;
end
k=B(1,1)/A(1,1);
A(1,:)=A(1,:)-k*B(1,:);
A(:,i)=[];%A矩阵减维数
end
- 例1:已知离散系统的闭环特征方程,试判别该系统的稳定性。
结果如图:
Routh判据
clear;
syms k z q %定义变量k z q
p=input('请输入特征多项式的参数 ='); %提示输入参数
n=length(p); %得到p的长度
for i=0:ceil(n/2)-1 %将多项式进行劳斯矩阵排序
a(1,i+1)=p(2*i+1);
if 2*(i+1)>n
a(2,i+1)=0;
break
end
a(2,i+1)=p(2*(i+1));
end
for k=3:n %计算从第三行开始劳斯矩阵内容
for j=1:ceil((n-k+1)/2)
if a(k-1,1)==0 %判断是否有共轭虚根
disp('系统有共轭虚根')
breaksign=1;
break
end
a(k,j)=(a(k-1,1)*a(k-2,j+1)-a(k-1,j+1)*a(k-2,1))/a(k-1,1);
end
end
disp('劳斯矩阵') %输出对应的劳斯矩阵
disp(double(a))
for i=3:k %用劳斯判据判断系统的稳定性
if a(i-1,1)<=0 %判断第一列元素是否不大于0
q=1;
break
end
end
if q==1
disp('系统不稳定')
else
disp('系统稳定') %输出系统稳定性判定结果
end
- 例1:带入双线性变换 z = w + 1 w − 1 z = \frac{w+1}{w-1} z=w−1w+1 后,使用劳斯判据
结果如图:
离散系统的动态性能分析
- 例1:分析离散系统的动态性能
求闭环传递函数Gz:
Gp = tf(1,[1 1 0]); % Gp(s)
Gpz = c2d(Gp,1); % 有零阶保持器
Gz = feedback(Gpz,1); % 闭环传递函数,feedback(a,b)中b为反馈部分
求阶跃响应曲线:
[num,den]=tfdata(Gz); % 令num = Gz的分子,令den = Gz的分母
dstep(num,den,20); % dstep函数用来绘制离散系统的单位阶跃响应,n = 20为指定的输出点个数
由图可知:系统的单位阶跃响应序列值、最大超调量、稳态值
根轨迹分析
- 例1:根轨迹分析离散系统
Hc = tf(1,conv([1 0],conv([0.05 1],[0.1 1]))); % Hc = Gp(s)
Hd = c2d(Hc,0.1); % 有零阶保持器的传递函数离散化,Ts = 0.1
rlocus(Hd); % 绘制根轨迹
求零极点:zpk(Hd) 即可
求系统稳定的临界值K:根轨迹与图中虚线部分的交点的Gain值
求阻尼比 = 0.7时的K值:沿着根轨迹移动,当Damping = 0.7时的Gain值