matlab_learning_2

z变换,基于matlab

z变换由来

对连续信号\(x(t)\)进行采样\(x_s(t) = \sum_{n=-\infty}^{+\infty} x(nT)\delta(t-nT)\),对采样信号做拉普拉斯变换 \[ X(s) = \mathcal{L} \left[\sum_{n=-\infty}^{+\infty} x(nT)\delta(t-nT) \right] = \sum_{n=-\infty}^{+\infty} x(nT)\mathcal{L} [\delta(t-nT)] = \sum_{n=-\infty}^{+\infty} x(nT) e^{-nTs} \]

\(z = e^{Ts}\)带入上式,得到\(X(s) = \sum_{n=-\infty}^{+\infty} x(nT) z^{-n}\)

z变换定义

\(x[n]\)为离散信号 \[ X(z) = \mathcal{Z}[x[n]] = \sum_{n=-\infty}^{+\infty} x[n]z^{-n} \]

z反变换定义

\[ x[n] = \mathcal{Z}^{-1}[X(z)] = \frac{1}{2\pi j} \oint_c X(z)z^{n-1}dz \]

收敛的充要条件

\[ \sum_{n=-\infty}^{+\infty} | x[n]z^{-n} | = M < +\infty \]

由充要条件推得不同情况下z变换的收敛域

  1. 有限长序列

    \(x[n]\) 只在 \(n_1 \leq n \leq n_2\) 有值,则z变换是有限项之和。\(x[n]\)有界,只要\(0 < |z| < \infty\)\(X(z)\)收敛。 有限长序列的收敛域\(0 < |z| < \infty\)被称为有限\(z\)平面。 \[ X(z) = \sum_{n=n_1}^{n_2} x[n]z^{-n} \]

    不管什么样的序列,若在\(n>0\)处序列有值,则在\(z=0\)处不收敛。若在\(n<0\)处序列有值,则在\(z=\infty\)处不收敛。

  2. 右边序列

    \(x[n]\)\(n \geq n_1\)时有值,其它为0。其z变换为 \[ X(z) = \sum_{n=n_1}^{-1} x[n]z^{-n} + \sum_{n=0}^{\infty} x[n]z^{-n} \] 等式右边第一项收敛域为\(0 \leq |z| < \infty\),等式右边第二项收敛域为\(R_{x-} < |z| \leq \infty\)。收敛域合一起是\(R_{x-} < |z| < \infty\)

  3. 因果序列

    \(x[n]\)\(n \geq 0\)时有值,其它为0。其z变换为 \[ X(z) = \sum_{n=0}^{\infty} x[n]z^{-n} \] 收敛域为\(R_{x-} < |z| \leq \infty\)

  4. 左边序列

    \(x[n]\)\(n \leq n_2\)时有值,其它为0。其z变换为 \[ X(z) = \sum_{n=-\infty}^{0} x[n]z^{-n} + \sum_{n=1}^{n_2} x[n]z^{-n} \] 等式右边第二项收敛域为\(0 < |z| \leq \infty\),等式右边第一项收敛域为\(0 < |z| < R_{x+}\)。收敛域合一起是\(0 < |z| < R_{x+}\)

  5. 反因果序列

    \(x[n]\)\(n < 0\)时有值,其它为0。其z变换为 \[ X(z) = \sum_{n=-\infty}^{-1} x[n]z^{-n} \] 收敛域为\(0 \leq |z| < R_{x+}\)

  6. 双边序列 \(x[n]\)在任意位置都有值。其z变换为 \[ X(z) = \sum_{n=-\infty}^{+\infty} x[n]z^{-n} \] 收敛域为\(R_{x-} < |z| < R_{x+}\)

z变换性质

性质 信号 z变换 收敛域
\(x[n]\) \(X(z)\) \(R\)
\(x_1[n]\) \(X_2(z)\) \(R_1\)
\(x_2[n]\) \(X_3(z)\) \(R_2\)
线性 \(ax_1[n] + bx_2[n]\) \(aX_1(z) + bX_2(z)\) 至少是\(R_1,R_2\)相交
时移 \(x[n-n_0]\) \(z^{-n_0}X(z)\) \(R\)可能增加或去除0和\(\infty\)
z域尺度变换 \(e^{jw_0 n}x[n]\) \(X(e^{-jw_0}z)\) \(R\)
\(z_0^n x[n]\) \(X(z z_0^{-1})\) \(z_0 R\)
\(a^n x[n]\) \(X(a^{-1}z)\) \(R\)的比例伸缩
时间反转 \(x[-n]\) \(X(z^{-1})\) \(R^{-1}\)
时间扩展 \(x_{(k)}[n] = x[r], n = rk; ~~ x_{(k)}[n] = 0, n \neq rk\) \(X(z^k)\) \(R^{1/k}\)
共轭 \(x^*[n]\) \(X^*(z^*)\) \(R\)
卷积 \(x_1[n] * x_2[n]\) \(X_1(z)X_2(z)\) 至少是\(R_1,R_2\)相交
一次差分 \(x[n] - x[n-1]\) \((1 - z^{-1})X(z)\) 至少是\(R\)\(| z| > 0\)的相交
累加 \(\sum_{k = -\infty}^{n} x[k]\) \(\frac{1}{1 - z^{-1}} X(z)\) 至少是\(R\)\(| z| >1\)的相交
z域微分 \(nx[n]\) \(-z\frac{dX(z)}{dz}\) \(R\)

初值定理:若\(n<0,x[n]=0\),则\(x[0] = \lim_{z\to \infty} X(z)\)

z变换与离散时间傅里叶变换关系

\(|z| = 1\)时,z变换就是离散时间傅里叶变换。当z变换的收敛域包括单位圆时,其离散时间傅里叶变换收敛。

z变换matlab代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
syms n         % n是符号变量,后面的运算都是符号运算
f = sin(n);
F = ztrans(f);
disp(F);
w0 = 2*pi/800;
A = 10;
phi= pi/6;

y = cos(w0*n + phi) + A*sin(w0*n);
Y = ztrans(y);
disp(Y);
subplot(1,3,1);
fplot(F);
subplot(1,3,2);
fplot(Y);

st = heaviside(n); % 阶跃信号的符号函数
ST = ztrans(st);
disp(ST);
subplot(1,3,3);
fplot(ST);

matlab中的z逆变换

matlab中的z逆变换结果都是因果序列,所以不用指定收敛域

参考https://ww2.mathworks.cn/help/symbolic/sym.iztrans.html

1
2
3
4
5
6
7
syms z n;
a = 2;

F = a*z^(-1) / (1 - a*z^(-1))^2;
f = iztrans(F, n);
disp(f);

LTI系统与z变换

在离散线性时不变系统的分析和表示中,z变换发挥特别重要的作用 \[ Y(z) = X(z)H(z) \]

\(H(z)\)称为传递函数,是系统单位脉冲响应的z变换。 只要单位圆在传函的收敛域内,将\(z = e^{jw}\)带入\(H(z)\),则\(H(z)\)变成系统的频率响应(z变换与傅里叶变换的关系)。

因果系统

一个离散线性时不变系统,\(H(z)\)的收敛域在某个圆的外边,包括无穷远点,该系统是因果的。对应前文因果序列的收敛域。h(n)为因果序列。

\(H(z)\)表示成多项式之比,其分子阶次不能高于分母阶次。

因果系统的初始松弛条件:\(if ~ x[n] = 0, n < n_0 ~~ then ~ y[n] = 0, n < n_0\),其中\(y[n] = \sum_{k = n_0}^{\infty} x[k]h[n-k]\)

满足因果性的LTI系统在未开始输入的情况下是不会有输出的

如果一个LTI系统是因果的,那么该系统就满足初始松弛条件;如果一个系统由线性常系数差分方程表征,并满足初始松弛条件,那么这就是一个满足因果性的LTI系统。

LTI系统的差分方程与matlab代码

matlab中系统的差分方程一般形式: \[ \sum_{k = 1}^{N} a[k]y[n-(k-1)] = \sum_{m = 1}^{M} b[m]x[n - (m-1)] \] 利用z变换的时移性质,其系统传函表示为: \[ Y(z) = \frac{ b[1] + b[2]z^{-1} + b[3]z^{-2} ... + b[M]z^{-(M-1)} }{ a[1] + a[2]z^{-1} + a[3]z^{-2} ... + a[N]z^{-(N-1) }} X(z) \]

一个离散线性时不变系统的稳定性等效于单位脉冲响应是绝对可和的。这种情况下h[n]的傅里叶变换收敛,所以传递函数的收敛域要包括单位圆。

以下代码分别演示了稳定与不稳定系统的分析:

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
b1 = [-4 5];
a1 = [1 -6 9]; % 不稳定系统

[r,p,k] = residuez(b1,a1);

disp(r);
disp(p);
disp(k);

figure(1);

zplane(b1,a1);

h=[zeros(1,20),1,zeros(1,1000)];

y=filter(b1,a1,h);
n=-20:1000;

figure(2);

stem(n,y);
xlabel('n');
ylabel('h(n)');

b2=1;
a2=[1,-1,0.9]; % 稳定系统
figure(3);
zplane(b2,a2);

figure(4);
y2 = filter(b2,a2,h);
stem(n,y2);

matlab_learning_2
http://456-xiao.github.io/2024/07/08/matlab-learning-2/
作者
xyh
发布于
2024年7月8日
许可协议