我是靠谱客的博主 单薄棉花糖,最近开发中收集的这篇文章主要介绍用Matlab建立传递函数模型,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、控制系统模型描述

1、传递函数描述

命令格式:sys = tf(num, den, Ts)
num:分子多项式降幂排序的系数向量
den:分母多项式降幂排序的系数向量
Ts:采样时间,默认时表示系统连续

2、零极点模型描述

命令格式:sys = zpk(z, p, k, Ts)
z、p、k分别为系统的零点、极点及增益,若无零极点则用[ ]表示。
Ts:采样时间,默认时表示系统连续

二、系统模型转换

1、传递函数转零极点

命令格式:[num, den] = zp2tf(z, p, k);

2、零极点转传递函数

命令格式:[z, p, k] = tf2zp(num, den);

三、系统连接

1、系统并联

sys = parallel(sys1, sys2);

2、系统串联

sys = series(sys1, sys2)

3、系统反馈

sys = feedback(sys1, sys2, sign);
sign用于说明反馈的正负,默认为负,及sign = -1;

四、举个例子

求闭环传递函数C(s)/R(s)

%model.m
G1 = tf(1, [1 10]);             %使用tf建立传递函数G1~G4
G2 = tf(1, [1 1]);
G3 = tf([1 0 1], [1 4 4]);
g4_num = [1 1];
g4_den = [1 6];
G4 = tf(g4_num, g4_den);

H1 = tf([1 1], [1 2]);
h2_num = 2;
h2_den = 1;
H3 = 1;
nh2 = conv(h2_num, g4_den);
dh2 = conv(h2_den, g4_num);
H2 = tf(nh2, dh2);              %将H2移至G4之后

sys1 = series(G3, G4);          %将G3G4串联
sys2 = feedback(sys1, H1, +1);  %G3G4与H1构成反馈
sys3 = series(G2, sys2);        %G2与子系统sys2串联
sys4 = feedback(sys3, H2);      %组建H2反馈子系统
sys5 = series(G1, sys4);        %将G1串联到sys4
sys = feedback(sys5, H3);       %连接H3反馈,得到系统传函

num = sys.num{1};               %提取sys分子系数
den = sys.den{1};               %提取sys分母系数
printsys(num, den);             %输出系统传递函数

t = 0 : 0.005 : 15;             %设定仿真时间为15[y, x, t] = step(num, den, t);  %得到15s内单位阶跃响应数据
plot(t, y);                     %绘制图像
grid;                           %显示网格
xlabel('时间(s)');            %横坐标说明
ylabel('系统响应');             %纵坐标说明

[z, p, k] = tf2zp(num, den);    %传函转化为零极点模式
zero_sys = zpk(z, p, k);
zero_sys

运行代码,输出两种形式的传递函数。

给系统加入阶跃信号得到响应:

最后

以上就是单薄棉花糖为你收集整理的用Matlab建立传递函数模型的全部内容,希望文章能够帮你解决用Matlab建立传递函数模型所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部