科技信息
高校理科研究
傅里叶级数在数字信号处理中的应用
中北大学信息与通信工程学院
姜世杰
余红英
[摘要]快速傅里叶变换是针对于将一个大点数N的DFT分解成若干个小点的DFT的组合的算法[1],主要是巧妙的利用了Wn因
使运算量大大降低,节省了大量时间。快速傅里叶变换的算法已经作为一种强子的周期性和对称性,构造出的一种DFT快速算法。
[2]
有力的工具运用到信号处理领域中,大大推动了数字信号处理技术的进步。本论文比较详细的阐述了快速傅里叶算法的数学原理、运算特点并完善的运用到Matlab,实现先好的仿真处理。[关键词]离散傅里叶变换快速傅里叶变换Matlab
1.引言
DFT在数字信号处理中得到了广泛的应用,其把信号从时域转化到频域上加以分析其频率与相位的变化关系,因为信号不仅随时间变化,还与频率、相位等信息有关,这就需要进一步分析信号的频率结构,并在频率域中对信号进行描述。然而DFT算法是以庞大的数学计算量作为代价。FFT的发现,使计算量大大缩减。它的发现是数字信号处理发展史上的一个转折点,也可以说是一个里程碑的作用。
2.FFT的算法推导
我们知道离散傅里叶变换对是如下形式:
N-1
N+kNk
k
WN=WN·WN=-WN(10)(11)(12)代入(6)中
k
(12)
DFT:X(k)=Σx(n)W
n=0
N-1
nkN
k=0,1,…,N-1(1)
-nk
IDFT:x(n)=1ΣX(k)WNn=0,1,…,N-1(2)
n=0
m为正整数,若不满足此关系我们可以相设序列x(n)的长度N=2m,
应的补零。
首先,我们将x(n)按照n的奇、偶将其分成两个子列,即:x1(r)=x(2r)
r=0,1,(3)…N-1
r)=x(2r+1)x2(所以(1)式可变为:
Σ
N-1
X(k)=DFT[x(n)]=Σx(n)W
n=0
N-1
nkN
N-1=Σx(2r)W
r=0
2rkN
N-1
+Σx(2r+1)W
r=0
(2r+1)kN
偶子列
=Σx1(r)(WN)+W利用W
r=0
nkN
2rk
kNN-1奇子列
(4)
Σx(r)(W
r=0
2
2rkN
)
(13)前半部分:X(k)=X1(k)+WNX2(k)k=0,1…N-1
k
后半部分:XN+k)=X1((14)k)-WNX2(k)k=0,1…N-1
N
综上,我们只要求出-1上各个整数k对应的X1(k)、X2(k)值,
即可求出整个区间的X(k)值,显然这样可以大大节省计算时间。
3.Matlab实现已知x(n)是两个正弦信号与白噪声的叠加,利用Matlab对其进行频谱分析。
clearall;
%产生两个正弦加白噪声;N=256;f1=.1;f2=.2;fs=1;a1=5;a2=3;w=2*pi/fs;x=a1*sin(w*f1*(0:N-1))+a2*sin(w*f2*(0:N-1))+randn(1,N);%应用FFT求频谱;subplot(3,1,1);plot(x(1:N/4));f=-0.5:1/N:0.5-1/N;X=fft(x);y=ifft(X);subplot(3,1,2);plot(f,fftshift(abs(X)));subplot(3,1,3);plot(real(x(1:N/4)));
≤≤
的周期性:
-j∏
-j∏由于WN=e
2
所以WN=e
N-1-j∏2=e=W
N-1N(5)
(5)式代入(4)式化简得:r)WX(k)=Σx1(
r=0
Σ
ΣΣΣΣ1ΣΣΣΣΣΣΣ2Σ
kN+W
kNΣx(r)W
r=0
2
rkN=X1(k)+WNX2(k)
k
(6)
在此也不难看出:
N-1
X(k)=Σx1(r)W
r=0
NrkNrkNN-1=Σx(2r)W
r=0
NrkNrkN(7)(8)
X(k)=Σx2(r)W
r=0
=Σx(2r+1)W
r=0
即X1(k)与X2(k)分别为x1(r)与x2(r)的N/2点的DFT,这些点按照(6)
式可合成一个N点的DFT。但是x1(r)与x2(r)以及X1(k)与X2(k)的长度都
Nk=0,1,…-1,而X(k)的长度为N;因此要想得到完整是N/2,也就是r、
的图像,我们就要再次用到W的周期性。
W则
X1(k+N)=Σx1(r)W
r=0
同理可得X2(k+N)=X2(k)
Nr(k+N)
NNrkN=W
r(k+N)
N(9)
=Σx1(r)W
r=0
rkN
=X1(k)(10)
4.小结
本论文着重详细的介绍了FFT的两种算法原理,并在Matlab中得到了很好的实现,可以让我们对FFT有个更加直观的理解。通过FFT与DFT的对比,我们看出,FFT并不是一种不同于DFT的变换形式,而
lab给出的FFT介绍实际是是为减少DFT计算量的一种快速算法。mat
DFT的表达式,未作DFT向FFT的简化过程说明,但计算过程内核是
加之超大规模集成电路(VLSI)和计算机的飞FFT。以FFT算法为契机,
速发展,使得数字信号处理的理论获得了飞速发展,并广泛的应用到各个领域。
参考文献[1]胡广书.数字信号处理-理论算法与实现(第二版).清华大学出版社,2003
[2]余成波,杨菁,杨如民,周登义.数字信号处理及MATLAB实现.清华大学出版社,2005
[3]谭子尤,张雅彬.离散傅里叶变换快速算法的研究与MATLAB算法实现.中国科技信息,2006/22
(11)
由(10)(11)两式看出,当N≤k≤N-1时,所对应的X1(k)、X2(k)与
2
前半部分k值(0≤k ≤N-1)所对应的完全相同。而
2
科技信息
高校理科研究
傅里叶级数在数字信号处理中的应用
中北大学信息与通信工程学院
姜世杰
余红英
[摘要]快速傅里叶变换是针对于将一个大点数N的DFT分解成若干个小点的DFT的组合的算法[1],主要是巧妙的利用了Wn因
使运算量大大降低,节省了大量时间。快速傅里叶变换的算法已经作为一种强子的周期性和对称性,构造出的一种DFT快速算法。
[2]
有力的工具运用到信号处理领域中,大大推动了数字信号处理技术的进步。本论文比较详细的阐述了快速傅里叶算法的数学原理、运算特点并完善的运用到Matlab,实现先好的仿真处理。[关键词]离散傅里叶变换快速傅里叶变换Matlab
1.引言
DFT在数字信号处理中得到了广泛的应用,其把信号从时域转化到频域上加以分析其频率与相位的变化关系,因为信号不仅随时间变化,还与频率、相位等信息有关,这就需要进一步分析信号的频率结构,并在频率域中对信号进行描述。然而DFT算法是以庞大的数学计算量作为代价。FFT的发现,使计算量大大缩减。它的发现是数字信号处理发展史上的一个转折点,也可以说是一个里程碑的作用。
2.FFT的算法推导
我们知道离散傅里叶变换对是如下形式:
N-1
N+kNk
k
WN=WN·WN=-WN(10)(11)(12)代入(6)中
k
(12)
DFT:X(k)=Σx(n)W
n=0
N-1
nkN
k=0,1,…,N-1(1)
-nk
IDFT:x(n)=1ΣX(k)WNn=0,1,…,N-1(2)
n=0
m为正整数,若不满足此关系我们可以相设序列x(n)的长度N=2m,
应的补零。
首先,我们将x(n)按照n的奇、偶将其分成两个子列,即:x1(r)=x(2r)
r=0,1,(3)…N-1
r)=x(2r+1)x2(所以(1)式可变为:
Σ
N-1
X(k)=DFT[x(n)]=Σx(n)W
n=0
N-1
nkN
N-1=Σx(2r)W
r=0
2rkN
N-1
+Σx(2r+1)W
r=0
(2r+1)kN
偶子列
=Σx1(r)(WN)+W利用W
r=0
nkN
2rk
kNN-1奇子列
(4)
Σx(r)(W
r=0
2
2rkN
)
(13)前半部分:X(k)=X1(k)+WNX2(k)k=0,1…N-1
k
后半部分:XN+k)=X1((14)k)-WNX2(k)k=0,1…N-1
N
综上,我们只要求出-1上各个整数k对应的X1(k)、X2(k)值,
即可求出整个区间的X(k)值,显然这样可以大大节省计算时间。
3.Matlab实现已知x(n)是两个正弦信号与白噪声的叠加,利用Matlab对其进行频谱分析。
clearall;
%产生两个正弦加白噪声;N=256;f1=.1;f2=.2;fs=1;a1=5;a2=3;w=2*pi/fs;x=a1*sin(w*f1*(0:N-1))+a2*sin(w*f2*(0:N-1))+randn(1,N);%应用FFT求频谱;subplot(3,1,1);plot(x(1:N/4));f=-0.5:1/N:0.5-1/N;X=fft(x);y=ifft(X);subplot(3,1,2);plot(f,fftshift(abs(X)));subplot(3,1,3);plot(real(x(1:N/4)));
≤≤
的周期性:
-j∏
-j∏由于WN=e
2
所以WN=e
N-1-j∏2=e=W
N-1N(5)
(5)式代入(4)式化简得:r)WX(k)=Σx1(
r=0
Σ
ΣΣΣΣ1ΣΣΣΣΣΣΣ2Σ
kN+W
kNΣx(r)W
r=0
2
rkN=X1(k)+WNX2(k)
k
(6)
在此也不难看出:
N-1
X(k)=Σx1(r)W
r=0
NrkNrkNN-1=Σx(2r)W
r=0
NrkNrkN(7)(8)
X(k)=Σx2(r)W
r=0
=Σx(2r+1)W
r=0
即X1(k)与X2(k)分别为x1(r)与x2(r)的N/2点的DFT,这些点按照(6)
式可合成一个N点的DFT。但是x1(r)与x2(r)以及X1(k)与X2(k)的长度都
Nk=0,1,…-1,而X(k)的长度为N;因此要想得到完整是N/2,也就是r、
的图像,我们就要再次用到W的周期性。
W则
X1(k+N)=Σx1(r)W
r=0
同理可得X2(k+N)=X2(k)
Nr(k+N)
NNrkN=W
r(k+N)
N(9)
=Σx1(r)W
r=0
rkN
=X1(k)(10)
4.小结
本论文着重详细的介绍了FFT的两种算法原理,并在Matlab中得到了很好的实现,可以让我们对FFT有个更加直观的理解。通过FFT与DFT的对比,我们看出,FFT并不是一种不同于DFT的变换形式,而
lab给出的FFT介绍实际是是为减少DFT计算量的一种快速算法。mat
DFT的表达式,未作DFT向FFT的简化过程说明,但计算过程内核是
加之超大规模集成电路(VLSI)和计算机的飞FFT。以FFT算法为契机,
速发展,使得数字信号处理的理论获得了飞速发展,并广泛的应用到各个领域。
参考文献[1]胡广书.数字信号处理-理论算法与实现(第二版).清华大学出版社,2003
[2]余成波,杨菁,杨如民,周登义.数字信号处理及MATLAB实现.清华大学出版社,2005
[3]谭子尤,张雅彬.离散傅里叶变换快速算法的研究与MATLAB算法实现.中国科技信息,2006/22
(11)
由(10)(11)两式看出,当N≤k≤N-1时,所对应的X1(k)、X2(k)与
2
前半部分k值(0≤k ≤N-1)所对应的完全相同。而
2