我是靠谱客的博主 幸福毛衣,最近开发中收集的这篇文章主要介绍Matlab仿真001-传递函数传递函数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

传递函数

描述形式:

❶传递函数形式:tf(num,den);(分子分母多项式系数)

numerator 英/ ˈnjuːməreɪtə / 分子
denominator 英/ dɪˈnɒmɪneɪtə / 分母

❷零极点形式:zpk(z,p,k)
①②⇆可以互转
[z,p,k]=tf2zp(num,den);
[num,den]=zp2tf(z,p,k);

❸展开式形式:①③⇆互转
[r,p,k]=residue(num,den);
[num,den]=residue(r,p,k);
r,p分别为展开后的留数及极点构成的列向量;k为余项多项式行向量。
G ( s ) = r 1 s − p 1 + r 2 s − p 2 + ⋅ ⋅ ⋅ + k boxed{G(s)=frac {r1} {s-p1}+frac {r2} {s-p2}+···+k} G(s)=sp1r1+sp2r2+⋅⋅⋅+k

% MATLAB代码:
>> tf(10,[1,10])

ans =
     10
  ------
  s + 10
 
Continuous-time transfer function.

>> zpk([1,2],[3,4],5)

ans =
  5 (s-1) (s-2)
  -------------
   (s-3) (s-4)
 
Continuous-time zero/pole/gain model.

系统级接

㊀ sys=series(sys1,sys2); %串联,传递函数直接相乘
㊁ sys=parallel(sys1,sys2);% 并联,传递函数直接相加
㊂ sys=feedback(sys1,sys2,-1); %反馈
H ( s ) = s y s 1 1 + s y s 2 ∗ s y s 1 H(s)=frac {sys1} {1+sys2*sys1} H(s)=1+sys2sys1sys1
也可直接通过分子分母多项式形式,实现多系统级联
[numc,denc]=series(num1,den1,num2,den2);
[numb,denb]=parallel(num1,den1,num2,den2);
[numf,denf]=feedback(num1,den1,num2,den2,-1);
[z,p,k]=tf2zp(numf,denf);

伯德图(波特图)

❹ 伯德函数绘制频率响应
bode(sys)

% MATLAB代码:
clc;clear all;close all;
sys1=tf(10,[1,10]);						% 低通,截止角频率为10
sys2=tf([1,0],[1,100]);					% 高通,截止角频率为100
subplot(1,2,1);bode(sys1,sys2);grid on;
sys3=series(sys1,sys2);					% 低通串联高通,等效带通
sys4=parallel(sys1,sys2);				% 低通并联高通,等效带阻
sys5=feedback(sys1,sys2,-1);
subplot(1,2,2);bode(sys3,sys4,sys5);grid on;

低通高通滤波器及其级联伯德图

% MATLAB代码:查看传递函数形式
>> sys1

    10
  ------
  s + 10
Continuous-time transfer function.

>> sys2

      s
  -------
  s + 100
 
Continuous-time transfer function.

>> sys3

         10 s
  ------------------
  s^2 + 110 s + 1000
 
Continuous-time transfer function.

>> sys4

   s^2 + 20 s + 1000
  ------------------
  s^2 + 110 s + 1000
 
Continuous-time transfer function.

>> sys5

      10 s + 1000
  ------------------
  s^2 + 120 s + 1000
 
Continuous-time transfer function.

>> [z,p,k]=tf2zp([10,1000],[1,120,1000])	% sys5的零极点
z = -100
p = -110.9902,-9.0098
k = 10

>> sys7=zpk(z,p,k)	% sys5的零极点模型

      10 (s+100)
  ----------------
  (s+111) (s+9.01)
 
Continuous-time zero/pole/gain model.

零极点图

pzmap(sys1,sys2,…,sysN)
上面伯德图中的零极点分布如下:
零极点分布图

% matlab代码
subplot(2,3,1);pzmap(sys1,'r');title('sys1 低通');grid on;
subplot(2,3,2);pzmap(sys2,'r');title('sys2 高通');grid on;
subplot(2,3,4);pzmap(sys3,'r');title('sys3 串联');grid on;
subplot(2,3,5);pzmap(sys4,'r');title('sys4 并联');grid on;
subplot(2,3,6);pzmap(sys5,'r');title('sys5 反馈');grid on;

时域响应

step(sys,t) % 阶跃响应图,t为仿真时间可省略
impulse(sys,t) % 冲激响应图,t为仿真时间可省略
lsim(sys,u,t) % 任意输入的响应图,输入为 (t,u)
[u,t]=gensig(type,tau) % 为lsim产生周期信号,type=“sine” | “square” | “pulse”,tau=周期

不同输入通过低通滤波器的响应图如下:
响应图

% matlab代码
sys1=tf(1000,[1,1000]);
t = 0:0.1:10;
u = t;
[u2,t2] = gensig('square',10^-3);
subplot(2,2,1);step(sys1);grid on;title('阶跃响应')
subplot(2,2,2);impulse(sys1);grid on;title('冲激响应')
subplot(2,2,3);lsim(sys1,u,t);grid on;title('斜坡响应')
subplot(2,2,4);lsim(sys1,u2,t2);grid on;title('方波响应')

最后

以上就是幸福毛衣为你收集整理的Matlab仿真001-传递函数传递函数的全部内容,希望文章能够帮你解决Matlab仿真001-传递函数传递函数所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部