10 Z变换与DFT

256 阅读2分钟

z变换

对标连续时间的拉普拉斯变换,离散时间的z变换为

X(z)=n=x[n]znX(z)=\sum_{n=-\infty}^\infty x[n]z^{-n}

单边zz变换为

X(z)=n=0x[n]znX(z)=\sum_{n=0}^\infty x[n]z^{-n}

如果把z表示成极坐标的形式z=rejωz=re^{j\omega},那么

X(rejω)=n=x[n]rnejωnX(re^{j\omega})=\sum_{n=-\infty}^\infty x[n]r^{-n}e^{-j\omega n}

收敛性只取决于z|z|,这造成ROC是一个环,在实际应用中多数都是一个幂级数的收敛判定。

基本变换对 2-z-bianhuandui.png

ROC的性质

  • 都是圆环
  • ROC包含单位元等价于傅立叶变换收敛
  • ROC不包含极点
  • 有限序列ROC为整个平面,可能不包含0和无穷
  • 右边序列:ROC就是最外侧极点向外延展的圆环
  • 左边序列:ROC就是最内侧极点向内延伸的圆环
  • 双边序列:ROC由圆环组成,内外边界由极点确定
  • ROC必须连通,多项式ROC求交集

z逆变换

x[n]=12πjCX(z)zn1dzx[n] = \frac{1}{2\pi j} \int_C X(z)z^{n-1}dz

C表示ROC内一条闭合曲线。这个正式的做法太复杂了,工程上使用三种方法来解决。

  • 形式配凑

    anu[n]a^n u[n] ZZ: 11az1\frac{1}{1-az^{-1}}, ROC: z>a|z| > |a|
    如果ROCz<a|z| < |a|,那么x[n]=anu[n1]x[n]=-a^nu[-n-1]

  • 部分分式展开:这是之前很常用的有理式拆分,回到情况一

  • 幂级数展开:就是把X(z)X(z)展开成z的多项式,而每一项的系数其实就对应了某个x,这是从z变换定义看出来的。哪怕x不是一个多项式都可以,用Taylor展开

z变换的性质

基本和拉普拉斯一样

  • 线性:ax[n]+by[n],Z:aX(z)+bY(z)ax[n]+by[n], Z: aX(z)+bY(z),ROC求交集
  • 时移:x[nn0],Z:zn0X(z)x[n-n_0], Z: z^{-n_0}X(z),ROC不变,可能加上或除去z=0/z=0/\infty
  • 乘z:z_0^{n}x[n], Z: X(z/z_0),, ROC=|z_0|R_x$
  • z域微分:zdX(z)/dz,InverseZ:nx[n]-zdX(z)/dz, InverseZ: nx[n],ROC=R
  • 共轭:x[n],Z:X(z)x^*[n], Z: X^*(z*),ROC不变
  • 时间反转:x[n],Z:X(1/z)x[-n], Z: X(1/z), ROC=-R, x[n],Z:X(1/z)x^*[-n], Z: X(1/z^*), ROC=-R
  • 卷积:x[n]y[n],Z:X(z)Y(z)x[n]*y[n], Z: X(z)Y(z), ROC求交,如果存在零极点相消,那么ROC可以更大

z变换与差分方程表示的LTI

差分方程表示为:k=0Naky[nk]=k=0Mbkx[nk]\sum_{k=0}^N a_k y[n-k]=\sum_{k=0}^M b_k x[n-k] 这样,H(z)=k=0Mbkzkk=0NakzkH(z)=\frac{\sum_{k=0}^M b_k z^{-k}}{\sum_{k=0}^N a_k z^{-k}},而Y(z)=H(z)X(z)Y(z)=H(z)X(z)

注意上述过程需要初始松弛条件。

对于有限长序列,可以使用DFT。 另一个现实考虑是,一个无限长的非周期信号,他的频域趋于连续,计算机不好处理,因此截取有限个点进行周期延拓,这样频域也是离散的。

DFT与IDFT

  • DFT
X[k]=n=0N1x[n]ej2πNnk,k=0,...,N1X[k]=\sum_{n=0}^{N-1} x[n] e^{-j\frac{2\pi}{N}nk}, k = 0, ..., N-1
  • IDFT
x[n]=1Nk=0N1X[k]ej2πNnk,n=0,...,N1x[n] = \frac{1}{N} \sum_{k=0}^{N-1}X[k] e^{j \frac{2\pi}{N}nk}, n = 0, ..., N-1

DFT性质

23-DFT.png

FFT

从DFT的公式看到,需要求出N个数字,没固定一个k,就得把右边以O(n)O(n)计算一边,总复杂度为O(n2)O(n^2)

重新调整右侧求和式子

f(x)=n=0N1anxnf(x) = \sum_{n=0}^{N-1} a_n x^n

其中,an=x[n]a_n = x[n],那么我们求的其实就是f(ej2πkN)f(e^{j2\pi \frac{k}{N}}),其实这个就是单位根wNkw_N^k,在复平面的单位元上,等距离分成N个点然后第0个点是1,逆时针编号。因此这个单位根有很好的性质:

  • wN0=w1k=1w_N^0=w_1^k=1,转一圈都是第1个。
  • wNk=wNk+Nw_N^{k}=w_N^{k+N},转一圈一样
  • wNk=wNk+N/2w_N^{k}=-w_N^{k+N/2},转一半取负
  • wN2k=wN/2kw_N^{2k}=w_{N/2}^k 严谨的证明可以用欧拉关系利用三角函数变换

接下来,把f按照次数的奇偶分成两个函数,

f1(x)=a0+a2x1+a4x2+...f2(x)=a1+a3x1+a5x2+...f_1(x)=a_0 + a_2 x^1 + a_4 x^2 + ... \\ f_2(x)=a_1 + a_3 x^1 + a_5 x^2 +...

那么f(x)=f1(x2)+xf2(x2)f(x) = f_1(x^2)+xf_2(x^2)

对于一个确定的k,f(wNk)=f1(wN2k)+wNkf2(wN2k)f(w_N^k)=f_1(w_N^{2k})+w_N^k f_2(w_N^{2k}),这样就把原问题转为两个规模减半的子问题,递归到w1k=1w_1^k=1即可。

这里还有个细节,上面的等式仅对k<N/2k<N/2成立,如果>N/2>N/2,那么f(wNk+N/2)=f1(wN2k+N)+wNk+N/2f2(wN2k+N)=f1(wN2k)wNkf2(wN2k)f(w_N^{k+N/2})=f_1(w_N^{2k+N})+w_N^{k+N/2}f_2(w_N^{2k+N})=f_1(w_N^{2k})-w_N^{k}f_2(w_N^{2k})