MATLAB 传递函数的相关函数

1. 连续时间传递函数

1.1 多项式形式传递函数

num = 1;             % 分子多项式的系数
den = [2, 3];        % 分母多项式的系数
G = tf(num, den)     % 求传递函数

在matlab中,运行上述代码,可以得到传递函数G(s) = \frac{1}{2s+3};

1.2 因式乘积形式(零极点)传递函数

z = [1];                % 零点
p = [2,3];              % 极点
k = -4;                 % 增益
G = zpk(z, p, k)        % 求传递函数

在matlab中,运行上述代码,可以得到传递函数G(s) = -\frac{4(s-1)}{(s-2)(s-3)};

1.3 由状态空间描述得到传递函数(单输入单输出)

A = [0 1; -1 -1];                   % 系统矩阵
B = [0; 1];                         % 输入矩阵
C = [1 0];                          % 输出矩阵
D = 0;                              % 直接传递矩阵
[num, den] = ss2tf(A, B, C, D);     % 求分子多项式与分母多项式
G = tf(num, den)                    % 求传递函数   

在matlab中,运行上述代码,可以得到传递函数G(s) = \frac{1}{s^2+s+1};

2. 离散传递函数

如果想要从某个连续传递函数得到在特定采样周期下的离散函数,请看第3节。

离散时间传递函数的建立与连续时间基本一致,只需要引入一个采样周期T

请注意z变换拉氏变换之间的区别,二者基本无共同点。

2.1 多项式形式离散传递函数

num = 1;             % 分子多项式的系数
den = [2, 3];        % 分母多项式的系数
T   = 1;             % 采样周期(1s)
G = tf(num, den, T)  % 求传递函数

在matlab中,运行上述代码,可以得到传递函数G(z) = \frac{1}{2z+3},采样时间为1s。

2.2 零极点形式离散传递函数

z = [1];                % 零点
p = [2,3];              % 极点
k = -4;                 % 增益
T = 1;                  % 采样周期(1s)
G = zpk(z, p, k, T)     % 求传递函数

在matlab中,运行上述代码,可以得到传递函数G(z) = -\frac{4(z-1)}{(z-2)(z-3)},采样时间为1s。

 

3. 传递函数的化简与转化

3.1 连续传递函数与离散传递函数间的转化

3.1.1 连续传递函数到离散传递函数

已知一个连续传递函数\frac{1}{s+1}

运行下方代码,可以获得其在采样时间T=1 s时,离散传递函数G(z)=\frac{0.6321}{z-0.3679}

(其余形式的连续传递函数同理,均是使用函数c2d

num = 1;             % 分子多项式的系数
den = [1, 1];        % 分母多项式的系数
G = tf(num, den)     % 连续传递函数
T = 1;               % 采样周期(1s)
Gz= c2d(G, T)        % 离散传递函数

3.1.2 离散传递函数到连续时间函数

已知一个离散传递函数G(z)=\frac{0.6321}{z-0.3679}采样时间为T=1s

运行下方代码,可以获取其连续传递函数G(s)=\frac{0.9999}{s+0.9999}

(其余形式的离散传递函数同理,均是使用函数d2c

num = 0.6321;           % 分子多项式的系数
den = [1, -0.3679];     % 分母多项式的系数
T   = 1;                % 采样周期(1s)
Gz = tf(num, den, T)    % 离散传递函数
Gs = d2c(Gz)            % 连续传递函数

3.2 因式乘积形式(零极点形式)与多项式形式的互相转化

3.2.1 因式乘积形式(零极点形式) 转化到 多项式形式

传递函数的变化:-4\frac{s-1}{(s-2)(s-3)} \Rightarrow \frac{-4s+4}{s^2 - 5s+6}

z = [1];                            % 零点
p = [2,3];                          % 极点
k = -4;                             % 增益
[num, den] = zp2tf(z, p, k);        % 因式乘积形式(零极点形式) 转化到 多项式形式
G = tf(num, den)                    % 多项式形式

3.2.2 多项式形式 转化到 因式乘积形式(零极点形式)

传递函数的变化:\frac{s+2}{s^2 + 4s+3} \Rightarrow \frac{s+2}{(s+3)(s+1)}

num = [1,2];                        % 分子多项式的系数
den = [1,4,3];                      % 分母多项式的系数
[z, p, k] = tf2zp(num, den);        % 多项式形式 转化到 因式乘积形式(零极点形式)
G = zpk(z, p, k)                    % 零极点形式

3.3 传递函数的化简

传递函数的变化:\frac{s}{s^2 + s} \Rightarrow \frac{1}{s+1}

num = [1, 0];           % 分子多项式的系数
den = [1, 1, 0];        % 分母多项式的系数
G1 = tf(num, den)       % 带有可以对消项的传递函数
G2 = minreal(G1)        % 化简之后

3.4 多项式形式中首一形式与尾一形式的互相转化

3.4.1 将传递函数化简为首1形式

传递函数的变化:\frac{1}{10s+1}\Rightarrow \frac{0.1}{s+0.1}

num = 1;                % 分子多项式的系数
den = [10, 1];          % 分母多项式的系数
G1 = tf(num, den)       % 传递函数
G2 = minreal(G1)        % 化简为首一形式

3.4.2 将传递函数化简为尾1形式

传递函数的变化:\frac{1}{s+10} \Rightarrow \frac{0.1}{0.1s+1}

G   = tf(1, [1, 10]);               % 获取传递函数
num = cell2mat(G.Numerator);        % 分子多项式的系数
den = cell2mat(G.Denominator);      % 分母多项式的系数
num = num/den(end);                 % 除以分母最后一项
den = den/den(end);                 % 除以分母最后一项
G2  = tf(num, den)                  % 化简为尾一形式

3.5 求阶跃响应

Gs = tf(1, [1, 1]);         % 连续时间传递函数
Gz = c2d(Gs, 1);            % 获取对应的离散时间传递函数,采样时间T = 1s
step(Gs);                   % 连续传递函数的阶跃响应
hold on;                    % 保持图形
step(Gz);                   % 离散传递函数的阶跃响应
legend('阶跃响应-连续传递函数', '阶跃响应-离散传递函数'); % 添加图例

 

  • 37
    点赞
  • 292
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值