离散傅里叶变换(DFT)
傅里叶变换分类-基于信号类型
非周期-连续
这种类型的信号沿正负轴无穷方向伸展,并且不会出现周期性的重复.此类信号的傅里叶变换称为傅里叶变换.
周期-连续
此类信号的傅里叶变换称为傅里叶级数.
非周期-离散
在负无穷到正无穷区间内,这类信号仅在一些不连续的点处有定义,并且不会周期性地反复出现.
此类信号的傅里叶变换称为离散时间傅里叶变换.
周期-离散
这种类型的信号是按一定时间间隔从负无穷到正无穷反复出现的离散信号.其傅里叶变换称为离散傅里叶变换.
- 四种类型的信号都是延伸向正无穷和负无穷的,而计算机中只能存储有限个数值.假设一个1024点的信号,如何进行傅里叶变换?
- 正弦波和余弦波定义中规定该信号为无穷信号,因此,你不可能用一组无限的信号合成有限的信号.
- 这可以通过设想在信号实际点的左右两侧存在无穷多个样点的方法来实现,如果这些设想点取值全部为零,则该信号可视作离散-非周期信号,可以应用离散时间傅里叶变换.另一种方法是将真实信号的1024个点复制给设想采样点,或者说将这1024个采样点进行周期性拓延.这样一来,此信号可视为一个离散-周期信号.此时可以选用离散傅里叶变换(DFT)进行分析.
- 要合成一个非周期性的信号必须要有无穷多的正弦波.计算机无法实现,因此,DFT是唯一可用于DSP领域的傅里叶变换.
DFT逆运算的合成,计算
x[i]=∑i=0N2ReX¯[k]cos(2πkiN)+∑i=0N2ImX¯[k]sin(2πkiN)(A-1)
(A-1)
x
[
i
]
=
∑
i
=
0
N
2
R
e
X
¯
[
k
]
c
o
s
(
2
π
k
i
N
)
+
∑
i
=
0
N
2
I
m
X
¯
[
k
]
s
i
n
(
2
π
k
i
N
)
- 总而言之,任何一个N点信号,
x[i]
x
[
i
]
都可以通过,
N2
N
2
+1点的余弦波和,
N2
N
2
+1点的正弦波来合成.余弦波和正弦波的幅值分别由数组
ReX¯[k]
R
e
X
¯
[
k
]
和
ImX¯[k]
I
m
X
¯
[
k
]
决定.
- 在式(A-1)中,数组被称为 ReX¯[k] R e X ¯ [ k ] 和 ImX¯[k] I m X ¯ [ k ] ,而不是 ReX[k] R e X [ k ] 和 ImX[k] I m X [ k ] ,这是因为此处需要的是合成幅值,和频域内幅值略有不同(频域内记作 ReX[k] R e X [ k ] 和 ImX[k] I m X [ k ] ).
- 两者转换需要除以比例因子.
ReX¯[k]=ReX[k]N/2ImX¯[k]=−ImX[k]N/2(A-2) (A-2) R e X ¯ [ k ] = R e X [ k ] N / 2 I m X ¯ [ k ] = − I m X [ k ] N / 2 - 两种特殊情况除外
ReX¯[0]=ReX[0]NImX¯[N/2]=−ImX[N/2]N(A-3) (A-3) R e X ¯ [ 0 ] = R e X [ 0 ] N I m X ¯ [ N / 2 ] = − I m X [ N / 2 ] N
分析计算DFT
- 计算DFT有三种方法
- 通过联立方程求解
- 通过相关性计算
- 将时域信号与适当的正弦或余弦波相乘,在将结果累加(即求解输入信号与基本函数之间的相关性),即可得到频域中的每个样点值.
ReX[k]=∑i=0N−1x[i]cos(2πkiN)ImX[k]=−∑i=0N−1x[i]sin(2πkiN)(A-4) (A-4) R e X [ k ] = ∑ i = 0 N − 1 x [ i ] c o s ( 2 π k i N ) I m X [ k ] = − ∑ i = 0 N − 1 x [ i ] s i n ( 2 π k i N )
- 将时域信号与适当的正弦或余弦波相乘,在将结果累加(即求解输入信号与基本函数之间的相关性),即可得到频域中的每个样点值.
- FFT
- 实际应用中,如果DFT点数少于32个,则选用相关性的方法来计算,否则选用FFT方法进行计算