我是靠谱客的博主 幸福毛衣,这篇文章主要介绍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

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
% 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)

复制代码
1
2
3
4
5
6
7
8
9
10
% 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;

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

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
% 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)
上面伯德图中的零极点分布如下:
零极点分布图

复制代码
1
2
3
4
5
6
7
% 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=周期

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

复制代码
1
2
3
4
5
6
7
8
9
10
% 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-传递函数传递函数内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部