连续传递函数离散化

s变换到z变换:
command:c2d
作用:离散化;
其中离散化的方法又有很多:前向差分;后向差分;tustin;零极点匹配;脉冲响应;阶跃响应;
下面先说一说各种离散方式的特点:

  • 前向差分:方法是用一阶前向差分近似替代微分,用矩形面积之和近似替代数值积分;特点是近似关系简单,稳态增益不变,但稳定性可能会改变,且一般不用此种方法。
  • 后向差分:和前向差分很相似,不过是用一阶后向差分来代替;特点:近似关系简单,稳态增益不变,稳定性不变,一对一映射关系(无频率混叠),但高频段畸变严重,采样频率越大,频率特性越好。
  • 双线性(Tustin)变换:方法是用梯形面积取代数值积分;特点和后向差分类似。但线性范围比后向差分要大。
  • 零极点匹配法:映射关系为z变换,稳定性不变,频率混叠,没有畸变。
  • 脉冲响应不变法和阶跃响应不变法(零阶保持器法):多对一变换,频率混叠;稳态增益改变(工程意义不大,不用于控制器设计)
    以上理论部分均来自于华中科技大学林桦老师数字控制系统理论与设计课件。

下面是matlab中的内容:
matlab的c2d命令提供了五种离散的方法:

  • zoh 零阶保持器法,默认的就是这个。
  • foh 一阶保持器法
  • tustin 双线性变换法
  • impulse 脉冲响应法
  • matched 零极点匹配法
    控制器设计的时候多采用tustin,后向差分,零极点配置等。滤波器设计常用脉冲响应不变法;
    使用方式是:
sysd = c2d(sys,Ts,method)

如果不写method的话,默认是zoh。Ts是采样频率。
c2d命令的栗子:
在这里插入图片描述
command:

H = tf([1 -1],[1 4 5],'InputDelay', 0.3);
Hd = c2d(H,0.1,'tustin');

输出是:
连续传递函数离散化_第1张图片
其他的类似。

z到s的变换:
command使用方式是:

sysc = d2c(sysd,method) 

默认方式是zoh;
举个栗子:
在这里插入图片描述
command:

H = tf([1 -1],[1 1 0.3],0.1);
Hc = d2c(H)

输出:
连续传递函数离散化_第2张图片
以上都来自matlab中的help,只做记录用,供自己学习。

上面比较详细的记录了利用matlab里的command转换的,下面记录一下直接用替换的,可以手写笔算,也可以用matlab里的符号运算,主要是用subs的函数形式。但是得提前知道一些常见的离散化的s到z的转换表达式。
eg:

syms wr w0 Kp Kr s Ts z    % 定义符号变量
G1 =2*Kr*wi*s/(s^2+2*wi*s+w0^2)         %R控制
G2 = subs(G1,s,2*(z-1)/Ts/(z+1))    %离散化  tustin变换
G3 = collect(G2,z)  % 将表达式G2中的以z为变量合并相同次幂;

转换出来就是
在这里插入图片描述
和之前师兄发的一致。
在这里插入图片描述
下面是几个常用的变换的一些转换公式。
1.双线性变换,即tustin变换;
连续传递函数离散化_第3张图片
连续传递函数离散化_第4张图片
2.后向差分;
连续传递函数离散化_第5张图片
连续传递函数离散化_第6张图片
其他的就不一一列举了。

你可能感兴趣的:(matlab及其应用)