用 Matlab 和 Python 方法查找零极点图、系统函数的频率响应(幅频特性、相频特性
由系统函数求零极点、频率响应(幅频特性、相频特性)的 Matlab 和 Python 方法
Author: Sijin Yu
文章目录
- 由系统函数求零极点、频率响应(幅频特性、相频特性)的 Matlab 和 Python 方法
- 1. Matlab
- 1.1 tf2zpk() 函数
- 1.2 zplane() 函数
- 1.3 freqz() 函数
- 1.4 Example
- 2. Python
- 2.1 scipy.signal.tf2zpk() 函数
- 2.2 zplane() 函数的自定义
- 2.3 scipy.signal.freqz() 函数
- 2.4 Example
- 3. 总结
本文以离散信号为例.
1. Matlab
1.1 tf2zpk() 函数
使用 tf2zpk()
函数可以获得频率响应的零极点.
matlab 的官方文档对 tf2zpk()
函数的用法介绍如下.
即, 给定系统函数
H
(
z
)
=
b
0
+
b
1
z
−
1
+
⋯
+
b
n
z
−
n
a
0
+
a
1
z
−
1
+
⋯
+
a
n
z
−
m
=
∑
i
=
0
n
b
i
z
−
i
∑
i
=
0
m
a
i
z
−
i
,
H(z)=\frac{b_0+b_1z^{-1}+\cdots+b_nz^{-n}}{a_0+a_1z^{-1}+\cdots+a_nz^{-m}}=\frac{\sum^{n}_{i=0}b_iz^{-i}}{\sum^m_{i=0}a_iz^{-i}},
H(z)=a0+a1z−1+⋯+anz−mb0+b1z−1+⋯+bnz−n=∑i=0maiz−i∑i=0nbiz−i,
令序列
b
=
[
b
0
,
b
1
,
⋯
,
b
n
]
,
a
=
[
a
0
,
a
1
,
⋯
,
a
m
]
b=[b_0,b_1,\cdots,b_n],a=[a_0,a_1,\cdots,a_m]
b=[b0,b1,⋯,bn],a=[a0,a1,⋯,am]. 系统函数的零极点表达式为
H
(
z
)
=
k
(
z
−
z
1
)
(
z
−
z
2
)
⋯
(
z
−
z
N
)
(
z
−
p
1
)
(
z
−
p
2
)
⋯
(
z
−
p
M
)
=
k
∏
i
=
1
N
(
z
−
z
i
)
∏
i
=
1
M
(
z
−
p
i
)
,
H(z)=k\frac{(z-z_1)(z-z_2)\cdots(z-z_N)}{(z-p_1)(z-p_2)\cdots(z-p_M)}=k\frac{\prod^N_{i=1}(z-z_i)}{\prod^M_{i=1}(z-p_i)},
H(z)=k(z−p1)(z−p2)⋯(z−pM)(z−z1)(z−z2)⋯(z−zN)=k∏i=1M(z−pi)∏i=1N(z−zi),
序列
z
=
[
z
1
,
z
2
,
⋯
,
z
N
]
,
p
=
[
p
1
,
p
2
,
⋯
,
p
M
]
z=[z_1,z_2,\cdots,z_N],p=[p_1,p_2,\cdots,p_M]
z=[z1,z2,⋯,zN],p=[p1,p2,⋯,pM] 分别表示
H
(
z
)
H(z)
H(z) 的零点和极点. 函数 [z, p, k]=tf2zpk(b, a)
返回以 b
和 a
序列为参数的系统方程的零点序列 z
、极点序列 p
、增益 k
.
1.2 zplane() 函数
matlab 的官方文档对 zplane()
函数的用法介绍如下.zplane()
有两个主要用法:
-
zplane(z, p)
. 传入参数为零点序列z
和极点序列p
. 直接作零极点图. -
zplane(b, a)
. 传入参数为系统函数的参数b
和a
. 函数自动根据系统函数作零极点图.\
在下文我们会验证这两种做法是等效的.
1.3 freqz() 函数
matlab 的官方文档对 freqz()
函数的用法介绍如下.
即, 给定系统函数
H
(
z
)
=
b
0
+
b
1
z
−
1
+
⋯
+
b
n
z
−
n
a
0
+
a
1
z
−
1
+
⋯
+
a
n
z
−
m
=
∑
i
=
0
n
b
i
z
−
i
∑
i
=
0
m
a
i
z
−
i
,
H(z)=\frac{b_0+b_1z^{-1}+\cdots+b_nz^{-n}}{a_0+a_1z^{-1}+\cdots+a_nz^{-m}}=\frac{\sum^{n}_{i=0}b_iz^{-i}}{\sum^m_{i=0}a_iz^{-i}},
H(z)=a0+a1z−1+⋯+anz−mb0+b1z−1+⋯+bnz−n=∑i=0maiz−i∑i=0nbiz−i,
令序列
b
=
[
b
0
,
b
1
,
⋯