数字信号处理 离散傅里叶变换的性质及应用
- 格式:docx
- 大小:132.47 KB
- 文档页数:9
离散傅里叶变换(dft)在数字信号处理中的应用离散傅里叶变换(DFT)是数字信号处理领域中广泛应用的一种数学工具,它的应用领域非常广泛,正是由于DFT 可以对信号进行分析、处理和合成。
DFT的定义是将离散序列通过傅里叶变换转换成连续频域信号,可以用于分离不同频率的信号成分。
因此,它可以应用于音效处理、图像处理、通信等许多领域。
在音频处理方面,DFT可以帮助实现音频数据的压缩与解压缩,能够将音频文件压缩至较小的文件大小,同时保持音频文件的质量不变。
在音频分析方面,可以使用DFT 来显露一个音频信号的谐波和部分谐波频率,从而可以对音频进行分析和剖析,并在混音和制作工程中使用谐波分析的结果。
在图像处理方面,DFT可以被用于图像的变换及增强,可以将图像变换为一组频域数据,进而分析图像的特征和结构。
采用一些滤波器来过滤DFT生成的频域数据,有助于增强高频部分。
此外, DFT也可以为图片中的噪声降低提供帮助,实际应用中可以通过频率域滤波器对信号进行过滤,用余弦正弦出现的频率表示它的信号特征。
在通信方面,DFT可以用于频域等化和频域编码,用于抵抗信道的非线性扭曲,并通过合适的变换和编解码技巧来减少误差和失真。
在数字调制领域,DFT可用于准确地定位最近距离符号的频率和相位,以及重新调制输入数据并回传到通信线路。
其带宽开销低和精密度高的特性,使得其成为数字通信中的必备技术之一。
总的来说,DFT已经成为了数字信号处理中最实用的工具之一。
通过DFT,我们可以对信号进行变换、分析和合成,实现数据的压缩与解压缩,以及在通信、图像处理和音效处理方面提供了许多技术支持。
基于DFT的应用技术正在得到更广泛的关注,并被越来越多的领域所应用。
·54· 第3章 离散傅里叶变换(DFT )及其快速算法(FFT )3.1 引 言本章是全书的重点,更是学习数字信号处理技术的重点内容。
因为DFT (FFT )在数字信号处理这门学科中起着不一般的作用,它使数字信号处理不仅可以在时域也可以在频域进行处理,使处理方法更加灵活,能完成模拟信号处理完不成的许多处理功能,并且增加了若干新颖的处理内容。
离散傅里叶变换(DFT )也是一种时域到频域的变换,能够表征信号的频域特性,和已学过的FT 和ZT 有着密切的联系,但是它有着不同于FT 和ZT 的物理概念和重要性质。
只有很好地掌握了这些概念和性质,才能正确地应用DFT (FFT ),在各种不同的信号处理中充分灵活地发挥其作用。
学习这一章重要的是会应用,尤其会使用DFT 的快速算法FFT 。
如果不会应用FFT ,那么由于DFT 的计算量太大,会使应用受到限制。
但是FFT 仅是DFT 的一种快速算法,重要的物理概念都在DFT 中,因此重要的还是要掌握DFT 的基本理论。
对于FFT 只要掌握其基本快速原理和使用方法即可。
3.2 习题与上机题解答说明:下面各题中的DFT 和IDFT 计算均可以调用MA TLAB 函数fft 和ifft 计算。
3.1 在变换区间0≤n ≤N -1内,计算以下序列的N 点DFT 。
(1) ()1x n =(2) ()()x n n δ=(3) ()(), 0<<x n n m m N δ=- (4) ()(), 0<<m x n R n m N = (5) 2j()e, 0<<m n N x n m N π=(6) 0j ()e n x n ω=(7) 2()cos , 0<<x n mn m N N π⎛⎫= ⎪⎝⎭(8)2()sin , 0<<x n mn m N N π⎛⎫= ⎪⎝⎭(9) 0()cos()x n n ω=(10) ()()N x n nR n =(11) 1,()0n x n n ⎧=⎨⎩,解:(1) X (k ) =1N kn N n W -=∑=21j0eN kn nn π--=∑=2jj1e1ekN n k nπ---- = ,00,1,2,,1N k k N =⎧⎨=-⎩(2) X (k ) =1()N knNM n W δ-=∑=10()N n n δ-=∑=1,k = 0, 1, …, N -1(3) X (k ) =100()N knNn n n W δ-=-∑=0kn NW 1()N n n n δ-=-∑=0kn NW,k = 0, 1, …, N -1为偶数为奇数·55·(4) X (k ) =1m knN n W -=∑=11kmN N W W --=j (1)sin esin k m N mk N k N π--π⎛⎫⎪⎝⎭π⎛⎫ ⎪⎝⎭,k = 0, 1, …, N -1 (5) X (k ) =21j 0e N mn kn N N n W π-=∑=21j ()0e N m k nNn π--=∑=2j()2j()1e1em k N N m k Nπ--π----= ,0,,0≤≤1N k mk m k N =⎧⎨≠-⎩(6) X (k ) =01j 0eN nknN n W ω-=∑=021j 0e N k nN n ωπ⎛⎫-- ⎪⎝⎭=∑=002j 2j 1e1ek NN k N ωωπ⎛⎫- ⎪⎝⎭π⎛⎫- ⎪⎝⎭--= 0210j 202sin 2e2sin /2N k N N k N k N ωωωπ-⎛⎫⎛⎫- ⎪⎪⎝⎭⎝⎭⎡⎤π⎛⎫- ⎪⎢⎥⎝⎭⎣⎦⎡⎤π⎛⎫- ⎪⎢⎥⎝⎭⎣⎦,k = 0, 1, …, N -1或 X (k ) =00j 2j 1e 1e Nk N ωωπ⎛⎫- ⎪⎝⎭--,k = 0, 1, …, N -1(7) X (k ) =102cos N kn N n mn W N -=π⎛⎫ ⎪⎝⎭∑=2221j j j 01e e e 2N mn mn kn N N N n πππ---=⎛⎫ ⎪+ ⎪⎝⎭∑=21j ()01e 2N m k n N n π--=∑+21j ()01e 2N m k n N n π--+=∑=22j ()j ()22j ()j ()11e 1e 21e 1e m k N m k N N N m k m k N N ππ--+ππ--+⎡⎤--⎢⎥+⎢⎥⎢⎥--⎣⎦=,,20,,N k m k N mk m k N M ⎧==-⎪⎨⎪≠≠-⎩,0≤≤1k N - (8) ()22j j 21()sin ee 2j mn mnN N x n mn N ππ-π⎛⎫== ⎪-⎝⎭ ()()112222j j j ()j ()0011()=e e ee 2j 2j j ,2=j ,20,(0≤≤1)N N kn mn mn m k n m k n N N N N N n n X k W Nk m N k N mk k N --ππππ---+===--⎧-=⎪⎪⎨=-⎪⎪-⎪⎩∑∑其他(9) 解法① 直接计算χ(n ) =cos(0n ω)R N (n ) =00j j 1[e e ]2n n ωω-+R N (n )X (k ) =1()N knNn n W χ-=∑=0021j j j 01[e e ]e 2N kn n n N n ωωπ---=+∑=0000j j 22j j 11e 1e 21e 1e N N k k N N ωωωω-ππ⎛⎫⎛⎫--+ ⎪ ⎪⎝⎭⎝⎭⎡⎤--⎢⎥+⎢⎥⎢⎥--⎣⎦,k = 0, 1, … , N -1 解法② 由DFT 共轭对称性可得同样的结果。
离散傅里叶变换和离散时间傅里叶变换区别
离散傅里叶变换和离散时间傅里叶变换区别
离散傅里叶变换(Discrete Fourier Transform,DFT)和离散时间傅里叶变换(Discrete Time Fourier Transform,DTFT)是数字信号处理中常用的两种变换方法。
虽然它们都是傅里叶变换的离散形式,但是它们的应用场景和计算方式有所不同。
一、应用场景
离散傅里叶变换主要用于将时域信号转换为频域信号,常用于信号处理、图像处理、音频处理等领域。
而离散时间傅里叶变换则主要用于分析离散时间信号的频域特性,常用于数字滤波器设计、信号采样等领域。
二、计算方式
离散傅里叶变换的计算方式是将时域信号分解为一系列正弦和余弦函数的线性组合,然后通过计算每个正弦和余弦函数的振幅和相位来得到频域信号。
而离散时间傅里叶变换则是将离散时间信号看作是周期信号的一个周期,然后通过计算周期信号的傅里叶级数来得到频域信号。
三、计算复杂度
离散傅里叶变换的计算复杂度为O(N^2),其中N为信号长度。
而离散时间傅里叶变换的计算复杂度为O(N),其中N为信号长度。
因此,在计算复杂度上,离散时间傅里叶变换更加高效。
四、采样率
离散傅里叶变换的采样率是连续信号采样率的整数倍,而离散时间傅里叶变换的采样率则是任意的。
因此,在采样率上,离散时间傅里叶变换更加灵活。
综上所述,离散傅里叶变换和离散时间傅里叶变换虽然都是傅里叶变换的离散形式,但是它们的应用场景、计算方式、计算复杂度和采样率等方面都有所不同。
在实际应用中,需要根据具体的需求选择合适的变换方法。
数字信号处理实验题目:离散傅里叶变换的性质及应用学院:专业:学生姓名:班级/学号指导老师:一、实验目的1.了解DFT的性质及其应用2.熟悉MATLAB编程特点二、实验仪器及材料计算机,MATLAB软件三、实验内容及要求1.用三种不同的DFT 程序计算8()()x n R n =的256点离散傅里叶变换()X k ,并比较三种程序计算机运行时间。
(1)编制用for loop 语句的M 函数文件dft1.m ,用循环变量逐点计算()X k ; (2)编写用MATLAB 矩阵运算的M 函数文件dft2.m ,完成下列矩阵运算:0000121012(1)(1)(1) (0)(0) (1)(1)(1)(1) N NN NN N N NNN N N N N NN N X x W W W W X x W W W W x N X N W W W W -----⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥--⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦(3)调用fft 库函数,直接计算()X k ;(4)分别调用上述三种不同方式编写的DFT 程序计算序列()x n 的离散傅里叶变换()X k ,并画出相应的幅频和相频特性,再比较各个程序的计算机运行时间。
M 函数文件如下: dft1.m:function[Am,pha]=dft1(x) N=length(x); w=exp(-j*2*pi/N); for k=1:N sum=0; for n=1:Nsum=sum+x(n)*w^((k-1)*(n-1)); endAm(k)=abs(sum); pha(k)=angle(sum); end dft2.m:function[Am,pha]=dft2(x) N=length(x); n=[0:N-1];k=[0:N-1];w=exp(-j*2*pi/N);nk=n'*k;wnk=w.^(nk);Xk=x*wnk;Am=abs(Xk);pha=angle(Xk);dft3.m:function[Am,pha]=dft3(x)Xk=fft(x);Am=abs(Xk);pha=angle(Xk);源程序、运行结果及结论1、源程序<1>function[Am,pha] = dft1(x)N = length(x);w = exp(-j*2*pi/N);for k=1:Nsum = 0;for n = 1:Nsum = sum+x(n)*w^((k-1)*(n-1));endAm(k) = abs(sum);pha(k) = angle(sum);endend<2> function[Am,pha] = dft2(x)N = length(x);n = [0:N-1];k = [0:N-1];w = exp(-j*2*pi/N);nk = n'*k;wnk = w.^(nk);Xk = x*wnk;Am = abs(Xk); pha = angle(Xk);end<3> function[Am,pha] = dft3(x)Xk = fft(x);Am = abs(Xk); pha = angle(Xk);end<4> clear all;clc;x = [ones(1,8),zeros(1,256-8)];t = cputime;[Am1,pha1] = dft1(x);t1 = cputime-t;t = cputime;[Am2,pha2] = dft2(x);t2 = cputime-t;t = cputime;[Am3,pha3] = dft3(x);t3 = cputime-t;subplot(6,1,1);stem(Am1);title('幅频特性1'); subplot(6,1,2);stem(pha1);title('相频特性1'); subplot(6,1,3);stem(Am2);title('幅频特性2'); subplot(6,1,4);stem(pha2);title('相频特性2'); subplot(6,1,5);stem(Am3);title('幅频特性3'); subplot(6,1,6);stem(pha3);title('相频特性3');2、运行结果3、 结论从以上运行结果可以看出,调用FFT 库函数直接计算X(k)速度最快,所用时间趋于0,矩阵运算次之,用循环变量逐点计算运行速度最慢。
因此FF T 算法大大提高了DFT 的实用性。
2.利用DFT 实现两序列的卷积运算,并研究DFT 点数与混叠的关系。
(1)已知两序列: ⎩⎨⎧>≤≤=3;030;)5/3()(n n n h n ,用MATLAB 生成随机输入信号x(n),n 的取值为0~2;(2)用直接法(即用线性卷积的定义计算,见下式)计算线性卷积y(n)=x(n)*h(n)的结果,并以图形方式表示结果;20),()()(1-+≤≤-⨯=∑-=M N n m n h m x n y N m 其中:序列)1N n 0(),n (x -≤≤和序列)1M n 0(),n (h -≤≤(3)用MATLAB 编制利用DFT 计算线性卷积y(n)=x(n)*h(n)的程序;分别令圆周卷积的点数为L=5,6,8,10,以图形方式表示结果。
(4)对比直接法和圆周卷积法所得的结果。
源程序如下:用直接法和MATLAB 编制利用DFT 分别计算线性卷积y(n)=x(n)*h(n)的程序: N=0:3; M=3;x=rand(1,M); h=(3/5).^N; y1=conv(h,x);Xk2=fft(x,10); %做10点fft Hk2=fft(h,10); Yk2=Xk2.*Hk2; y2=ifft(Yk2);Xk3=fft(x,8); %做点8点fft Hk3=fft(h,8);Yk3=Xk3.*Hk3;y3=ifft(Yk3);Xk4=fft(x,6); %做6点fft Hk4=fft(h,6);Yk4=Xk4.*Hk4;y4=ifft(Yk4);Xk5=fft(x,5); %做5点fft Hk5=fft(h,5);Yk5=Xk5.*Hk5;y5=ifft(Yk5);Xk6=fft(x,4); %做4点fft 混频Hk6=fft(h);Yk6=Xk6.*Hk6;y6=ifft(Yk6);figure(1);n=[0:(length(x)-1)];subplot(4,2,1);stem(n,x); title('xn');xlabel('n');ylabel('幅度'); n=[0:(length(h)-1)];subplot(4,2,2);stem(n,h); title('hn');xlabel('n');ylabel('幅度'); n=[0:(length(y1)-1)];subplot(4,2,3);stem(n,y1); title('y1');xlabel('n');ylabel('幅度'); n=[0:(length(y2)-1)];subplot(4,2,4);stem(n,y2); title('y2');xlabel('n');ylabel('幅度'); n=[0:(length(y3)-1)];subplot(4,2,5);stem(n,y3); title('y3');xlabel('n');ylabel('幅度');n=[0:(length(y4)-1)];subplot(4,2,6);stem(n,y4);title('y4');xlabel('n');ylabel('幅度');n=[0:(length(y5)-1)];subplot(4,2,7);stem(n,y5);title('y5');xlabel('n');ylabel('幅度');n=[0:(length(y6)-1)];subplot(4,2,8);stem(n,y6);title('混频y6');xlabel('n');ylabel('幅度');MATLAB程序:将两个信号的DFT相乘,再做反变换,相当于时域做循环卷积。
而循环卷积是线性卷积以N为周期周期性延拓的结果,其中N为离散傅立叶变换的点数。
若x1(n)是N1点序列,x2(n)是N2点序列,则其线性卷积为N1+N2-1点,做N =max(N1,N2)点的傅立叶变换,则结果中将有N2-1点是混叠的。
题目中N1=16,N2=8,由程序运行结果可以看出,第二张图的前7(N2-1)个点为混叠结果,后9个点是线性卷积的结果。
所以,要用DFT来做线性卷积,DFT的点数必须大于或等于线性卷积的结果。
本题中取N1+N2-1=23为DFT的点数,即可得到正确的线性卷积结果。
四、思考题1.直接计算N=256点的DFT与用FFT计算256点,理论上速度差别应有多少?答:快速傅里叶变换是离散傅里叶变换的一种快速算法,计算N=256点DFT的x(k)所需要N^2=65536次复数乘法和N(N-1)=65280次复数加法,N=256点的FFT的x(k)所需要N/2lbN=1024次复数乘法和NlbN=2048次复数加法。
复数乘法运算速度提高倍数为N^2/(N/2lbN)=64,复数加法提高倍数为N(N-1)/(NlbN)=31.8752.说明为什么在实验内容2中L=6,8,10时采用FFT法对两序列计算圆周卷积的结果与线性卷积y(n)=x(n)*h(n)的结果相同,而与L=5时计算结果不同?答:用图形法求y1=x*h,可得到六个点,所以用FFT法对两序列计算圆周卷积的结果时,要求使得L>=M+N-1=6。
所以在实验内容2中L=6,8,10时采用FFT法对两序列计算圆周卷积的结果与线性卷积y(n)=x(n)*h(n)的结果相同,而与L=5时计算结果不同。
五、实验心得:通过这次实验,我对DFT的性质及其应用有了一个更加深入的了解,我并且熟悉了MATLAB编程特点。
这次实验不算难,不过还是要用心去编,不然很容易出现错误。
希望自己下次可以更细心一点,可以更好地完成实验内容。