《计算机控制理论与应用》MATLAB示例

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)} 的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} 后,使用劳斯判据
    在这里插入图片描述
    结果如图:
    在这里插入图片描述

离散系统的动态性能分析

  • 例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值

猜你喜欢

转载自blog.csdn.net/weixin_42657460/article/details/106384556