欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

用 Matlab 和 Python 方法查找零极点图、系统函数的频率响应(幅频特性、相频特性

最编程 2024-04-14 17:27:46
...

由系统函数求零极点、频率响应(幅频特性、相频特性)的 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() 函数的用法介绍如下.
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+a1z1++anzmb0+b1z1++bnzn=i=0maizii=0nbizi,
令序列 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(zp1)(zp2)(zpM)(zz1)(zz2)(zzN)=ki=1M(zpi)i=1N(zzi),
序列 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) 返回以 ba 序列为参数的系统方程的零点序列 z、极点序列 p、增益 k.

1.2 zplane() 函数

matlab 的官方文档对 zplane() 函数的用法介绍如下.
zplane() 的官方介绍.
zplane() 有两个主要用法:

  1. zplane(z, p). 传入参数为零点序列 z 和极点序列 p. 直接作零极点图.
  2. zplane(b, a). 传入参数为系统函数的参数 ba. 函数自动根据系统函数作零极点图.\

在下文我们会验证这两种做法是等效的.

1.3 freqz() 函数

matlab 的官方文档对 freqz() 函数的用法介绍如下.
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+a1z1++anzmb0+b1z1++bnzn=i=0maizii=0nbizi,
令序列 b = [ b 0 , b 1 , ⋯