文章目录
前言
前面博主介绍了信号中的连续时间信号和离散时间信号,数字信号也是离散时间信号的一种,而且讲诉了怎么获取数字信号也就是采样、量化的过程,而本篇博客是为了进一步介绍离散时间信号的特点,以及离散时间系统的意义,特别是线性时不变系统,了解这些之后,才能够对于信号做进一步的处理,例如:滤波、频谱分析、信号增强等等。
|版本声明:山河君,未经博主允许,禁止转载
一、离散时间系统
1.什么是离散时间系统
简单点说,离散时间系统就是对于离散信号执行某些规定的运算,执行者为某些算法或者元器件。或者更简单来说,就是输入信号,在系统中对于信号进行算法处理,再输出信号,这个过程我们称之为响应。一般表示为:
x
(
n
)
→
τ
y
(
n
)
x(n)\rightarrow^\tau y(n)
x(n)→τy(n)
其中
- x ( n ) x(n) x(n):是输入信号
- τ \tau τ:代表了系统的响应
- y ( n ) y(n) y(n):是系统对于输入信号的响应的输出。
如同下图所示
例如一些基础的系统:
- y ( n ) = x ( n ) y(n) = x(n) y(n)=x(n) :叫做恒等系统
- y ( n ) = x ( n − 1 ) y(n) = x(n-1) y(n)=x(n−1):叫做单位延迟系统
- y ( n ) = x ( n + 1 ) y(n) = x(n+1) y(n)=x(n+1):叫做单位超前系统
- y ( n ) = 1 3 [ x ( n + 1 ) + x ( n ) + x ( n − 1 ) ] y(n) = \frac{1}{3}[x(n+1) + x(n) + x(n-1)] y(n)=31[x(n+1)+x(n)+x(n−1)]:叫做滑动平均滤波器
- y ( n ) = ∑ k = − ∞ n x ( k ) = x ( n ) + x ( n − 1 ) + . . . + x ( 0 ) y(n) = \sum^{n}_{k=-\infty}x(k) = x(n) + x(n-1)+...+x(0) y(n)=∑k=−∞nx(k)=x(n)+x(n−1)+...+x(0):累加器系统
2.离散系统的分类
1)时不变系统/时变系统
如果一个离散时间系统的输入-输出特性不随着时间发生改变叫做时不变系统,反之叫做时变系统。也就是说如果
y
(
n
)
=
τ
[
x
(
n
)
]
⇒
y
(
n
−
k
)
=
τ
[
x
(
n
−
k
)
]
y(n) = \tau [x(n)] \Rightarrow y(n-k) = \tau [x(n-k)]
y(n)=τ[x(n)]⇒y(n−k)=τ[x(n−k)]
就是时不变系统,例如下图
a
,
b
,
c
,
d
a,b,c,d
a,b,c,d四个系统:
- a 、 c a、c a、c是时不变系统,
-
b
、
d
b、d
b、d是时变系统(输入输出关系会随n变化)
2)线性系统/非线性系统
满足叠加性的系统就是线性系统,反之就是非线性系统。叠加性是指系统对输入信号的加权和的响应等于对每个输入信号的响应的加权和。叠加性包括两个方面:齐次性和可加性。
- 齐次性:如果系统的输入乘以一个常数,则系统的输出也会乘以相同的常数:
x [ n ] → τ y [ n ] ⇒ a × x [ n ] → τ a × y [ n ] x[n]\rightarrow^\tau y[n] \Rightarrow a\times x[n]\rightarrow^\tau a\times y[n] x[n]→τy[n]⇒a×x[n]→τa×y[n] - 可加性:如果两个输入信号
x
1
[
n
]
x_1[n]
x1[n]和
x
2
[
n
]
x_2[n]
x2[n]分别输出了
y
1
[
n
]
y_1[n]
y1[n]和
y
2
[
n
]
y_2[n]
y2[n],那么
x
1
[
n
]
+
x
2
[
n
]
x_1[n]+x_2[n]
x1[n]+x2[n]会输出
y
1
[
n
]
+
y
2
[
n
]
y_1[n]+y_2[n]
y1[n]+y2[n],即:
x 1 [ n ] → τ y 1 [ n ] x 2 [ n ] → τ y 2 [ n ] x_1[n]\rightarrow^\tau y_1[n] \quad x_2[n]\rightarrow^\tau y_2[n] x1[n]→τy1[n]x2[n]→τy2[n]则
x 1 [ n ] + x 2 [ n ] → τ y 1 [ n ] + y 2 [ n ] x_1[n] +x_2[n] \rightarrow^\tau y_1[n] + y_2[n] x1[n]+x2[n]→τy1[n]+y2[n]
如下图对于齐次性和可加性的解释:
线性条件如上面所示,通过归纳,可以扩展到任意加权组合,可以得到:
x
(
n
)
=
∑
k
=
1
k
<
3
a
k
x
k
(
n
)
→
τ
=
y
(
n
)
=
∑
k
=
1
k
<
3
a
k
y
k
(
n
)
x(n)=\sum^{k<3}_{k=1} a_kx_k(n) \rightarrow^\tau =y(n) =\sum^{k<3}_{k=1} a_ky_k(n)
x(n)=k=1∑k<3akxk(n)→τ=y(n)=k=1∑k<3akyk(n)
其中
y
k
(
n
)
=
τ
[
x
k
(
n
)
]
y_k(n)=\tau [x_k(n)]
yk(n)=τ[xk(n)]
3)稳定/非稳定系统
稳定系统和非稳定系统的理解特别简单,即一个系统的输入输出都有界限则为稳定系统,而如果不满足则为非稳定系统。即满足对于所有时刻
n
n
n:
∣
x
(
n
)
∣
<
M
x
<
∞
,
∣
y
(
n
)
∣
<
M
y
<
∞
|x(n) | < M_x < \infty , |y(n)| < M_y < \infty
∣x(n)∣<Mx<∞,∣y(n)∣<My<∞
在实际系统应用中,我们讨论的往往是稳定系统,因为对于不稳定系统来说边界性的问题会导致系统运算量特别大,以及运算结果的不稳定性和某些极端现象例如溢出。
4)因果/非因果系统
因果系统指的是在任意时刻
n
n
n的输出仅仅依赖当前、或者之前时刻的输入,与以后的输入无关,则称之为因果系统,反之如果依赖以后的输入,那么就是非因果系统。可以表示为:
y
(
n
)
=
T
[
x
(
n
)
,
x
(
n
−
1
)
,
x
(
n
−
2
)
.
.
.
.
]
y(n) = T[x(n), x(n-1),x(n-2)....]
y(n)=T[x(n),x(n−1),x(n−2)....]
5)静态系统/动态系统
如果一个离散时间系统在任意时刻 n n n的输出 y ( n ) y(n) y(n)只依赖输入信号 x ( n ) x(n) x(n),就叫做静态系统或者是无记忆系统,反之,叫做动态系统或者有记忆系统。
3.离散时间系统的互联
很多实际的系统往往是由几个子系统互联而成的,互联的方式有串联和并联
1)并联
并联的表达方式是以
τ
1
\tau_1
τ1 的输出当作
τ
2
\tau_2
τ2 的输入,所以整体的表达方式为
y
[
n
]
=
τ
2
{
τ
1
[
x
(
n
)
]
}
y[n]=\tau_2 \{ \tau_1[x(n)] \}
y[n]=τ2{τ1[x(n)]}
用
τ
c
=
τ
1
τ
2
\tau_c=\tau_1\tau_2
τc=τ1τ2即
y
[
n
]
=
τ
c
x
[
n
]
y[n]=\tau_cx[n]
y[n]=τcx[n]
2)串联
串联表达方式为
y
3
(
n
)
=
y
1
(
n
)
+
y
2
(
n
)
=
τ
1
[
x
(
n
)
]
+
τ
2
[
x
(
n
)
]
=
(
τ
1
+
τ
2
)
[
x
(
n
)
]
=
τ
p
[
x
(
n
)
]
y_3(n) = y_1(n) + y_2(n) = \tau_1[x(n)] + \tau_2[x(n)] = (\tau_1+\tau_2)[x(n)] = \tau_p[x(n)]
y3(n)=y1(n)+y2(n)=τ1[x(n)]+τ2[x(n)]=(τ1+τ2)[x(n)]=τp[x(n)]
二、离散时间信号
1.离散时间序列
离散时间信号也叫做离散时间序列,例如:
x
[
n
]
=
sin
(
π
6
n
)
,
−
∞
<
n
<
∞
x[n]=\sin(\frac{\pi}{6}n), \quad -\infty < n < \infty
x[n]=sin(6πn),−∞<n<∞
如同下图
其中我们按照不同的分类方式,将离散时间序列分为以下几种:
- 有限长/无限长序列:按照序列的长度划分,如同下图,左边是有限长序列,右边是无限长序列
- 周期/非周期序列:如果信号呈周期重复,则为周期序列,如下图左边,反之为非周期序列
- 实数/复数序列:函数值为实数为实数序列,函数值为复数则为复数序列,复数常用于频域分析这个以后的文章中会详细介绍。
2.常用的信号序列
下文中将介绍一些常用的信号序列,在分析系统的特性时非常有用,因为在自然界中的语音信号常常是叠加的且非周期无限长的,所以无法直观的看出来系统的特性。而我们在设计一个系统时,可以使用这些基础的序列来分析系统特性。
1)单位脉冲/单位样本
数学公式为
δ
n
=
{
1
,
n
=
0
0
,
n
≠
0
\delta n= \begin{cases} 1,\quad n=0 \\ 0, \quad n \neq 0 \end{cases}
δn={1,n=00,n=0
意思是在零时刻突然产生一个幅值为1的脉冲,之后持续时间为0的序列,如下图
常用于分析输入信号到系统后的瞬时响应输出的特征
2)单位越阶
数学公式为
u
(
n
)
=
{
1
,
n
≥
0
0
,
n
<
0
u(n)= \begin{cases} 1,\quad n \geq 0 \\ 0, \quad n < 0 \end{cases}
u(n)={1,n≥00,n<0
意思某一时刻产生了脉冲,后面一直保持,如下图
常用于分析持续输入信号到系统后的输出的特征
3)单位斜坡
数学公式为
u
r
(
n
)
=
{
n
,
n
≥
0
0
,
n
<
0
u_r(n) = \begin{cases} n,\quad n \geq 0 \\ 0, \quad n < 0 \end{cases}
ur(n)={n,n≥00,n<0
意思为从某一时刻起,脉冲逐渐增大,看起来如下图
4)实指数序列
数学公式为
x
(
n
)
=
A
α
n
x(n)= A\alpha^n
x(n)=Aαn
当
α
\alpha
α的取值不同时,信号有以下表现
-
α
>
1
\alpha >1
α>1
-
0
<
α
<1
0 <\alpha <1
0<α<1
-
α
<
−
1
\alpha <-1
α<−1
-
−
1
<
α
<
0
-1 <\alpha <0
−1<α<0
对于指数序列,我们常用于分析系统的稳定性,也就是是否收敛,同样也经常用到复指数序列,这个在以后的文章中再进行介绍
3.离散时间信号的简单运算
- 自变量转换
简单的说就是信号的平移,即 y = x ( n − k ) y=x(n-k) y=x(n−k),k>0时,信号在时间上处于延迟,k<0时,信号在时间上处于超前 - 序列加法:
x 3 ( n ) = x 1 ( n ) + x 2 ( n ) x_3(n) = x_1(n)+x_2(n) x3(n)=x1(n)+x2(n) - 序列乘法:
x 3 ( n ) = x 1 ( n ) ∗ x 2 ( n ) x_3(n) = x_1(n) * x_2(n) x3(n)=x1(n)∗x2(n),值得注意的是,这种运算时非线性的,对于线性的解释在下文中提到 - 序列缩放:
x 2 ( n ) = a x 1 ( n ) a 为常数 x_2(n) = ax_1(n) \quad a为常数 x2(n)=ax1(n)a为常数 - 序列反转
x 2 ( n ) = x 1 ( − n ) x_2(n) = x_1(-n) x2(n)=x1(−n) - 序列尺度变换
x 2 ( n ) = x 1 ( m ∗ n ) m 为常数 x_2(n) = x_1(m*n) \quad m为常数 x2(n)=x1(m∗n)m为常数 - 序列的绝对值之和
s x = ∑ n = − ∞ ∞ ∣ x ( n ) ∣ s_x = \sum^\infty_{n=-\infty}|x(n)| sx=∑n=−∞∞∣x(n)∣,如果 s x < ∞ s_x < \infty sx<∞,则 x ( n ) x(n) x(n)称之为绝对可和序列,这个在傅里叶变化中会用到
4.冲激分解
按照上文所说的单位脉冲表达式为
δ
n
=
{
1
,
n
=
0
0
,
n
≠
0
\delta n= \begin{cases} 1,\quad n=0 \\ 0, \quad n \neq 0 \end{cases}
δn={1,n=00,n=0
我们可以导出任意离散时间序列可以通过单位冲激序列(Unit Impulse Sequence)的加权和来表示。这种表示方法称为冲激分解,它利用了单位冲激信号 δ n \delta n δn的特性。
假设我们有一个任意的离散时间序列
x
(
n
)
x(n)
x(n),它可以通过单位冲激信号的加权和来表示。形式上可以写为:
x
(
n
)
=
∑
k
=
−
∞
+
∞
x
(
k
)
∗
δ
(
n
−
k
)
x(n) = \sum^{+\infty}_{k=-\infty}x(k)*\delta(n-k)
x(n)=k=−∞∑+∞x(k)∗δ(n−k)
即:
- 当 n = k n=k n=k时, δ [ n − k ] = 1 \delta[n-k] = 1 δ[n−k]=1,这时加权和为 x [ k ] x[k] x[k]
- 当 n ≠ k n\neq k n=k时, δ [ n − k ] = 0 \delta[n-k] = 0 δ[n−k]=0,这时对于总和没有贡献
其中
x
(
k
)
x(k)
x(k)为该序列在k时间点上的值,例如现在有离散时间信号序列为:
x
(
n
)
=
{
2
,
n
=
0
3
,
n
=
1
,
n
=
4
0
,
n
=
2
,
n
=
5
1
,
n
=
3
x(n)=\begin{cases} 2,\quad n=0\\ 3, \quad n=1, n= 4 \\ 0, \quad n=2, n=5\\ 1,\quad n=3 \end{cases}
x(n)=⎩
⎨
⎧2,n=03,n=1,n=40,n=2,n=51,n=3
如果用集合来表示,则为:
x
[
n
]
=
{
2
‾
,
3
,
0
,
1
,
3
,
0
}
x[n] = \{ \underline2, 3, 0,1,3,0 \}
x[n]={2,3,0,1,3,0}
使用图形表示为:
它即等效为:
x
[
n
]
=
2
×
δ
[
n
−
0
]
+
3
×
δ
[
n
−
1
]
+
0
×
δ
[
n
−
2
]
+
1
×
δ
[
n
−
3
]
+
3
×
δ
[
n
−
4
]
+
0
×
δ
[
n
−
5
]
x[n]=2 \times \delta[n - 0] +3 \times \delta[n - 1] +0 \times \delta[n -2] +1 \times \delta[n-3] +3 \times \delta[n-4] +0 \times \delta[n-5]
x[n]=2×δ[n−0]+3×δ[n−1]+0×δ[n−2]+1×δ[n−3]+3×δ[n−4]+0×δ[n−5]
这种思想非常重要:对于一个系统来说,我们可以使用冲激分解的办法来描述系统对于一个单位脉冲是如何响应的,进而描述对任意输入序列的响应是多大。
总结
本篇文章中对于离散系统和离散时间序列做了一个总的描述,其中线性时不变系统是我们接下来分析系统的核心,而我们在数字系统中的实际应用的常常是一个因果、稳定的LTI系统。
对于离散时间序列中,单位脉冲序列是分析系统响应的基石,其中冲激分解则是我们下一章对于系统卷积公式的核心。
如果对您有所帮助,请帮忙点个赞吧!