lijun255sysu的个人博客分享 http://blog.sciencenet.cn/u/lijun255sysu

博文

控制系统传函,matlab相关函数---连续系统

已有 1830 次阅读 2022-5-18 09:58 |系统分类:科研笔记

%连续系统

1、假设传函为:

    Go = 5(s+1)*(s+2)/(s*(s+3)*(s+4)*(s+5))


matlab相关命令为:

%%%%%%%%%%%%%%%%%%%%%%%%

%---零极点形式

z = [-1; -2];

p = [0;-3; -4; -5];

k = 5;

sysc = zpk(z, p, k)

%结果如下:

                 5 (s+1) (s+2)

sysc=     -------------------

              s (s+3) (s+4) (s+5)


%%%%%%%%%%%%%%%%%%%%%%%%

% 在已知零极点情况项,可能需要变成多项式形式

% 变化方式1

num = conv(5,conv([1 1],[1 2]));

den = conv([1 0], conv([1 3], conv([1 4], [1 5])));

sysc = tf(num, den);


%结果如下:

                   5 s^2 + 15 s + 10

sysc =    ----------------------------

              s^4 + 12 s^3 + 47 s^2 + 60 s


% 变化方式2

z = [-1; -2];            % 此处为 ;号

p = [0;-3; -4; -5];    % 此处为 ;号

k = 5;

[num, den]= zp2tf(z, p, k); %零极点增益模型转换为多项式传递函数模型。

sysc = tf(num, den);


%结果如下:

                   5 s^2 + 15 s + 10

sysc =    ----------------------------

              s^4 + 12 s^3 + 47 s^2 + 60 s




2、假设传函为:

Go = (5 s^2 + 15 s + 10)/ (s^4 + 12 s^3 + 47 s^2 + 60 s )


matlab相关命令为:

%%%%%%%%%%%%%%%%%%%%%%%%

%--多项式形式1-----------------------

num = [5 15 10];

den = [1 12 47 60 0];

sysc = tf(num, den);

%结果如下:

                   5 s^2 + 15 s + 10

sysc =    ----------------------------

              s^4 + 12 s^3 + 47 s^2 + 60 s


%%%%%%%%%%%%%%%%%%%%%%%%

%--多项式形式2-----------------------

s = tf('s');

num =  5*s^2 + 15*s + 10;

den =  s^4 + 12*s^3 + 47*s^2 + 60*s;

sysc = num / den;

%结果如下:

                   5 s^2 + 15 s + 10

sysc =    ----------------------------

              s^4 + 12 s^3 + 47 s^2 + 60 s


%%%%%%%%%%%%%%%%%%%%%%%%

%在此情况项,可能需要转变成零极点形式

%---零极点形式1 

num = [5 15 10];

den = [1 12 47 60 0];

sysc = tf(num, den);

[z, p, k] = tf2zp(num, den);

sysc2 = zpk(z, p, k);


 %结果如下:

                     5 (s+2) (s+1)

sysc2 =      -------------------

                  s (s+5) (s+4) (s+3)




3、在上面两种情况下,都是手动如下多项式函数系数或者零极点;

如果在计算过程得到了Go,则如何变换呢?


a、如果得到的是多项式传函,变成零极点传函如下:

% s = tf('s');

% num =  5*s^2 + 15*s + 10;

% den =  s^4 + 12*s^3 + 47*s^2 + 60*s;

% sysc = num / den;

%  到此得到了多项式传函,变成零极点如下:

sysc2 = zpk(sysc)  ; % 直接用zpk转换


b、如果得到的是零极点传函,变成多项式传函如下:

%---零极点形式

%z = [-1; -2];

%p = [0;-3; -4; -5];

%k = 5;

%sysc = zpk(z, p, k)

%  到此得到了零极点传函,变成多项式如下:


sysc2 = tf(sysc);  %用tf直接就可以转换成多项式形式;



4、如何从多项式传函中提取系数? 如何从多项式中获得零极点值?

%假设连续系统传函为sysc,多项式形式;

[num, den ] = tfdata(sysc, 'v');%从传函中提取分子分母多项式系数;v功能,表示返回分子分母多项式系数;

[z,p,k] = tf2zp(num, den)  % 根据多项式系数,得到零极点

sysc2 = zpk(z, p, k);  % 根据零极点,得到零极点形式的传函;


[num,den] = zp2tf(z,p,k); % 根据零极点,得到多项式系数




https://blog.sciencenet.cn/blog-3377553-1339087.html

上一篇:GoodWin Book: EX 13.1 计算,以及式(13.3.8)计算
下一篇:控制系统传函,matlab相关函数---离散系统
收藏 IP: 223.73.207.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-18 17:30

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部