数字信号实验 DFT FFT

合集下载

实验二 DFT(FFT)的应用—利用FFT实现快速卷积

实验二 DFT(FFT)的应用—利用FFT实现快速卷积

姓名:高铭遥 班级:16131701 学号:1120171450 成绩:实验二 DFT/FFT 的应用-利用FFT 实现快速卷积[实验目的]1.深刻理解DFT/FFT 的概念和性质,进一步掌握圆周卷积和线性卷积两者之间的关系。

2.掌握DFT/FFT 的应用。

理解FFT 在实现数字滤波(或快速卷积)中的重要作用,更好地利用FFT 进行数字信号处理。

[实验内容及要求]1.给定两个序列()[]2,1,1,2x n =,()[]1,1,1,1h n =--。

首先直接在时域计算两者的线性卷积;然后用FFT 快速计算二者的线性卷积,验证结果。

(1)线性卷积 程序代码:figure(1);N1=4; N2=4; xn=[2,1,1,2]; hn=[1,-1,-1,1];N=N1+N2-1;%卷积后的序列长度 yn=conv(xn,hn);%线性卷积 x=0:N-1;stem(x,yn);title('线性卷积'); 运行结果:(2)FFT 卷积快速卷积 程序代码: figure(1); n=0:1:3; m=0:1:3;N1=length(n);%xn 的序列长度 N2=length(m);%hn 的序列长度 xn=[2,1,1,2]; hn=[1,-1,-1,1];姓名:高铭遥 班级:16131701 学号:1120171450 成绩:N=N1+N2-1;%卷积后的序列长度XK=fft(xn,N);%xn 的离散傅里叶变换 HK=fft(hn,N);%hn 的离散傅里叶变换 YK=XK.*HK;yn=ifft(YK,N);%逆变换if all(imag(xn)==0)&&(all(imag(hn)==0))%实序列的循环卷积仍为实序列 yn=real(yn); endx=0:N-1;stem(x,yn);title('FFT 卷积'); 运行结果:结果分析:对比(1)和(2)直接线性卷积和FFT 快速卷积的结果可以验证,用FFT 线性卷积的结果是与直接卷积的结果相同的,FFT 可以实现快速卷积,提高运算速度。

4.离散信号的DTFT和DFT - 数字信号处理实验报告

4.离散信号的DTFT和DFT - 数字信号处理实验报告

计算机与信息工程学院验证性实验报告一、实验目的:加深对离散信号的DTFT 和DFT 的及其相互关系的理解。

二、实验原理及方法在各种信号序列中,有限长序列信号处理占有很重要地位,对有限长序列,我们可以使用离散Fouier 变换(DFT)。

这一变换不但可以很好的反映序列的频谱特性,而且易于用快速算法在计算机上实现。

DTFT 和DFT 的主要区别就是DFT 在时域和频域都是离散的,它带来的最大好处就是适合于数值计算,适合于计算机处理,DTFT 和DFT 有许多相似的性质。

利用MATLAB 工程计算语言按要求编写程序算法,实现对有限长序列的离散时间傅立叶变换(DTFT )和离散傅立叶变换(DFT )的求解。

序列x[n] 的DTFT 定义:()[]j jn n X e x n eωω∞-=-∞=∑N 点序列x[n] 的DFT 定义:221010[]()[][]N j k jkn NNn N knN n X k X ex n ex n W ππ--=-====∑∑在MATLAB 中,对形式为0101...()()()...j jM j j M j j jN N p p e p e p e X e D e d d e d eωωωωωωω----+++==+++ 的DTDFT 可以用函数H=Freqz (num ,den ,w )计算;可以用函数U=fft (u ,N )和u=ifft (U ,N )计算N 点序列的DFT 正、反变换。

三、实验内容:1、已知序列5()cos,01516x n n nπ=≤≤分别计算16点序列的16点和32点DFT,绘出幅度谱图形,并绘出该序列的DTFT图形。

(1)x(n) 的 16 点和 32 点 DTFT,绘出 X(e j ) 幅度谱图形;(2)x(n) 的 16 点和 32 点 DFT,绘出 X (k) 幅度谱图形;2、已知序列: x(n)={1,2,3,4,5,6,5,4,3,2,1}(1)计算x(n) 的 DFT 为 X (k) ,绘出它的幅度和相位图;(2)计算x(n) 的 DTFT 为)(jwX e,绘出它的幅度和相位图;(3)利用 hold 函数,比较并验证 X (k) 是)(jwX e的采样。

数字信号处理实验四

数字信号处理实验四

实验一:DFS 、DFT 与FFT一、实验内容2、已知某周期序列的主值序列为x(n)=[0,1,2,3,2,1,0],编程显示2个周期的序列波形。

要求:① 用傅里叶级数求信号的幅度谱和相位谱,并画出图形 ② 求傅里叶级数逆变换的图形,并与原序列进行比较。

N=7;xn=[0,1,2,3,2,1,0]; xn=[xn,xn]; n=0:2*N-1; k=0:2*N-1;Xk=xn*exp(-j*2*pi/N).^(n'*k); x=(Xk*exp(j*2*pi/N).^(n'*k))/N; subplot(2,2,1);stem(n,xn);title('x(n)');axis([-1,2*N,1.1*min(xn),1.1*max(xn)]); subplot(2,2,2);stem(n,abs(x));title('IDFS|X(k)|');axis([-1,2*N,1.1*min(x),1.1*max(x)]); subplot(2,2,3),stem(k,abs(Xk));title('|X(k)|');axis([-1,2*N,1.1*min(abs(Xk)),1.1*max(abs(Xk))]); subplot(2,2,4),stem(k,angle(Xk));title('arg|X(k)|');axis([-1,2*N,1.1*min(angle(Xk)),1.1*max(angle(Xk))]);课程名称 数字信号 实验成绩 指导教师 王丽霞实 验 报 告院系 信息工程学院 班级 11专升本通信工程 学号 1103100068 姓名 周海霞日期 2011年10月17日12351051015|X (k)|510-2-1012arg|X (k)|3、已知有限长序列x(n)=[1,0.5,0,0.5,1,1,0.5,0],要求: ① 求该序列的DFT 、IDFT 的图形;xn=[1,0.5,0,0.5,1,1,0.5,0]; N=length(xn); n=0:N-1; k=0:N-1;Xk=xn*exp(-1i*2*pi/N).^(n'*k); x=(Xk*exp(1i*2*pi/N).^(n'*k))/N; subplot(2,2,1);stem(n,xn);title('x(n)');axis([-1,N,1.1*min(xn),1.1*max(xn)]); subplot(2,2,2);stem(n,abs(x));title('IDFT|X(k)|');axis([-1,N,1.1*min(x),1.1*max(x)]); subplot(2,2,3),stem(k,abs(Xk));title('|X(k)|');axis([-1,N,1.1*min(abs(Xk)),1.1*max(abs(Xk))]); subplot(2,2,4),stem(k,angle(Xk));title('arg|X(k)|');axis([-1,N,1.1*min(angle(Xk)),1.1*max(angle(Xk))]);0.510.5124681234|X (k)|2468-2-1012arg|X (k)|② 用FFT 算法求该序列的DFT 、IDFT 的图形;xn=[1,0.5,0,0.5,1,1,0.5,0]; N=length(xn);subplot(2,2,1);stem(n,xn); title('x(n)'); k=0:N-1; Xk=fft(xn,N);subplot(2,1,2);stem(k,abs(Xk)); title('Xk=DFT(xn)'); xn1=ifft(Xk,N);subplot(2,2,2);stem(n,xn1);title('x(n)=IDFT(Xk)');x(n)1234567X k=DFT(xn)x(n)=IDFT(X k)③ 假定采用频率Fs=20Hz ,序列长度N 分别取8、32和64,用FFT 计算其幅度谱和相位谱。

DFT-FFT的应用之确定性信号谱分析

DFT-FFT的应用之确定性信号谱分析

实验报告课程名称:数字信号处理指导老师:成绩:__________________实验名称:DFT/FFT的应用之一确定性信号谱分析实验类型:__验证_ 同组学生姓名:—一、实验目的和要求谱分析即求信号的频谱。

本实验采用DFT/FFT技术对周期性信号进行谱分析。

通过实验,了解用X(k)近似地表示频谱X(ejω)带来的栅栏效应、混叠现象和频谱泄漏,了解如何正确地选择参数(抽样间隔T、抽样点数N)。

二、实验内容和步骤2-1 选用最简单的周期信号:单频正弦信号、频率f=50赫兹,进行谱分析。

2-2 谱分析参数可以从下表中任选一组(也可自定)。

对各组参数时的序列,计算:一个正弦周期是否对应整数个抽样间隔?观察区间是否对应整数个正弦周期?信号频率f(赫兹)谱分析参数抽样间隔T(秒)截断长度N (抽样个数)50 第一组参数0.000625 3250 第二组参数0.005 3250 第三组参数0.0046875 3250 第四组参数0.004 3250 第五组参数0.0025 162-3 对以上几个正弦序列,依次进行以下过程。

2-3-1 观察并记录一个正弦序列的图形(时域)、频谱(幅度谱、频谱实部、频谱虚部)形状、幅度谱的第一个峰的坐标(U,V)。

2-3-2 分析抽样间隔T、截断长度N(抽样个数)对谱分析结果的影响;2-3-3 思考X(k)与X(e jω)的关系;2-3-4 讨论用X(k)近似表示X(ejω)时的栅栏效应、混叠现象、频谱泄漏。

三、主要仪器设备MATLAB编程。

四、操作方法和实验步骤(参见“二、实验内容和步骤”)五、实验数据记录和处理%program 2-2-1clear;clf;clc;%清楚缓存length=32;T=0.000625;t=0:0.001:31;%设置区间以及步长n=0:length-1;xt=sin(2*pi*50*t);xn=sin(2*pi*50*T*n);figure(1);subplot(2,1,1);plot(t,xt);xlabel('t');ylabel('x(t)');axis([0 0.1 -1 1]);title('原序列');subplot(2,1,2);stem(n,xn);xlabel('n');ylabel('xn)');title('抽样后序列');axis([0 length -1 1]);figure(2); %画出序列的实部、虚部、模、相角subplot(2,2,1);stem(n,real(xn));xlabel('n');ylabel('real(xn)');title('序列的实部');axis([0 length -1 1]); subplot(2,2,2);stem(n,imag(xn));xlabel('n');ylabel('imag(xn)');title('序列的虚部');axis([0 length -1 1]); subplot(2,2,3);stem(n,abs(xn));xlabel('n');ylabel('abs(xn)');title('序列的模');axis([0 length -1 1]); subplot(2,2,4);stem(n,angle(xn));xlabel('n');ylabel('angle(xn)');title('序列的相角');axis([0 length -1 1]); F=fft(xn,length); %计算DFTfigure(3); %画出DFT的的幅度,实部和虚部subplot(3,1,1);stem(n,abs(F));xlabel('k');ylabel('abs(F)');title('DFT幅度谱');subplot(3,1,2);stem(n,real(F));xlabel('k');ylabel('real(F)');title('dft 实部'); subplot(3,1,3);stem(n,imag(F));xlabel('k');ylabel('imag(F)');title('DFT的虚部'); 六、实验结果与分析 实验结果: 第一组参数:tx (t )原序列nx n )nr e a l (x n )ni m a g (x n )na b s(x n )na n g l e (x n )k a b s (F )-15kr e a l (F )dft 实部ki m a g (F )第二组参数:tx (t )nx n )nr e a l (x n )ni m a g (x n )na b s (x n )na n g l e (x n )k a b s (F )DFT 幅度谱-14kr e a l (F )dft 实部ki m a g (F )第三组参数:tx (t )原序列nx n )nr e a l (x n )ni m a g (x n )序列的虚部na b s(x n )na n g l e (x n )序列的相角k a b s (F )DFT 幅度谱kr e a l (F )dft 实部-14ki m a g (F )DFT的虚部第四组参数;tx (t )原序列nx n )抽样后序列nr e a l (x n )ni m a g (x n )na b s (x n )na n g l e (x n )k a b s (F )DFT 幅度谱kr e a l (F )dft 实部ki m a g (F )第五组数据:tx (t )原序列nx n )nr e a l (x n )ni m a g (x n )序列的虚部na b s (x n )na n g l e (x n )k a b s (F )DFT 幅度谱-15kr e a l (F )dft 实部ki m a g (F )实验数据分析6-1 实验前预习有关概念,并根据上列参数来推测相应频谱的形状、谱峰所在频率(U )和谱峰的数值(V )、混叠现象和频谱泄漏的有无:奈奎斯特定律的时候不会出现频率的混叠现象。

信号实验报告( 离散傅里叶变换及其快速算法及IIR数字滤波器的设计)

信号实验报告( 离散傅里叶变换及其快速算法及IIR数字滤波器的设计)

信号实验一离散傅里叶变换及其快速算法一、实验目的1、掌握计算序列的离散傅里叶变换(FFT)的方法;2、掌握实现时间抽取快速傅里叶变换(FFT)编程方法;3、加深对DFT与序列的傅里叶变换和Z变换之间的关系的理解;4、复习复数序列的运算方法。

二、程序设计框图1.码位倒置程序框图2.蝶形图运算程序框图三、实验程序实验程序的源代码如下:#include"math.h"#include"stdio.h"/*------------------------------------------------------------------------------------------子函数部分------------------------------------------------------------------------------------------*/ void swap(float *a,float *b)//交换变量子函数{float T;T=*a;*a=*b;*b=T;}void fft (float A [],float B [],unsigned M)//数组A为序列的实部, 数组B为序列的虚部{unsigned long N,I,J,K,L,LE,LE1,P,Q,R;float Wr,Wi,W1r,W1i,WTr,WTi,theta,Tr,Ti;N=1<<M;J=0;for(I=0;I<N-1;I++){if(J>I){swap(&A [I],&A [J]);swap(&B [I],&B [J]);}K=N>>1;while(K>=2&&J>=K){J-=K;K>>=1;}J+=K;}for(L=1;L<=M;L++){LE=1<<L;LE1=LE/2;Wr=1.0;Wi=0.0;theta=(-1)*3.1415926536/LE1;W1r=cos (theta);W1i=sin (theta);for(R=0;R<LE1;R++){for(P=R;P<N-1;P+=LE){Q=P+LE1;//基本蝶形图的复数运算Tr=Wr*A[Q]-Wi*B[Q];Ti=Wr*B[Q]+Wi*A[Q];A[Q]=A[P]-Tr;B[Q]=B[P]-Ti;A[P]+=Tr;B[P]+=Ti;}WTr=Wr;WTi=Wi;Wr=WTr*W1r-WTi*W1i;Wi=WTr*W1i+WTi*W1r;}}return;}/*------------------------------------------------------------------------------------------主函数部分------------------------------------------------------------------------------------------*/ void main(){float A[20],B[20];char t1,t2,file_name[20];int M,N,i,iiff;FILE *fp;/*************************************数据读取部分************************************/ printf("请输入文件名:");//输入数据文件名scanf("%s",file_name);printf("FFT变换还是IFFT变换?(FFT:1,IFFT:-1):");//输入变换方式, 1为FFT, -1为IFFTscanf("%d",&iiff);while(iiff!=1&&iiff!=-1)//检错: 检验上一步的输入是否有错, 有错则重新输入{printf("输入错误, 请重新输入! ");printf("FFT or IFFT?(FFT:1,IFFT:-1):");scanf("%d",&iiff);}fp=fopen(file_name,"r");//打开文件并读入数据fscanf(fp,"%d",&M);N=pow(2,M);//计算序列总数for(i=0;i<N;i++)//读取文件中的数据{fscanf(fp,"%f%c%c%f",&A[i],&t1,&t2,&B[i]);if(iiff==-1)//根据FFT或IFFT修正BB[i]=B[i]*-1;if(t2!='j')//检错: 检验读取格式是否有错{printf("输入格式错误\n");break;}if(t1=='+')//判断虚部的正负号B[i]=B[i];else if(t1=='-')B[i]=-B[i];}/****************************************变换部分****************************************/ fft(A,B,M);//FFT变换/**************************************数据输出部分**************************************/ fp=fopen("fft_result.txt","w"); //输出结果if(iiff==-1)fprintf(fp,"IFFT变换的输出结果是: \n");elsefprintf(fp,"FFT变换的输出结果是: \n");for(i=0;i<N;i++){if(iiff==-1) //根据FFT或IFFT修正B{B[i]=B[i]*-1/N;A[i]=A[i]/N;}if(B[i]>=0)//修正虚部的输出格式fprintf(fp,"%f+j%f\n",A[i],B[i]);else if(B[i]<0)fprintf(fp,"%f-j%f\n",A[i],-B[i]);else if(B[i]==0)fprintf(fp,"%f\n",A[i]);}fclose(fp);}四、程序运行结果检验(1) 1.对序列进行FFT变换输入文件fft_input.txt:21+j02+j0-1+j04+j0控制台输入:请输入文件名: fft_input.txtFFT变换还是IFFT变换?(FFT:1,IFFT:-1): 1输出文件fft_result.txt:FFT变换的输出结果是:6.00000+j0.000002.00000+j2.00000-6.00000+j0.000002.00000+j-2.00000运行结果分析:程序运行输出结果与计算结果相同, 表示傅里叶正变换(FFT)成功。

数字信号处理实验3 FFT算法应用

数字信号处理实验3 FFT算法应用
与图 6-1 有相同的结论。 (2)用以下代码可得图 6-2 >> N=64; >> k=0:N-1; >> X=1./(1-0.8*exp(-j*2*pi*k/N)); >> x=ifft(X,64); >> n=k; >> stem(n,abs(x)) >> grid
图 6-2
>> xlabel('n');ylabel('x[n]');
图 6-1
理论分析如下:
由欧拉公式得: x[n] cos(2 7n) 1 cos(2 19n)
N
2N
1
(e
j 2 7n N
e
j 2 ( N 7n) N
1
e
j 2 19n N
1
e
j 2 ( N 19n)
N
)
2
2
2
j 2 kn
对 p[n] e N ,其 2N 点的 DFT 变换为:
2N 1
j 2mn 2N 1 j 2n(2km)
X (k) 。
(2) 已知某序列 x(n) 在单位圆上的 N=64 等分样点的 Z 变换为
X (zk
)
X
(k)
1 1 0.8e j2k / N
,k
0,1,2,...,63

_
_
用 N 点 IFFT 程序计算 x(n) IDFT[ X (k)],绘出和 x(n) 。
实验要求:利用 MATLAB 编程完成计算,绘出相应图形。并与理论计算相比较,说明实验结 果的原因。 (1) 用以下代码实现可得图 6-1 所示的 DFT 图。 >> N=64; >> n=0:2*N-1; >> x=cos(2*pi*7*n/N)+1/2*cos(2*pi*19*n/N); >> X=fft(x,128); >> k=n; >> stem(k,abs(X)) >> grid >> xlabel('k');ylabel('|X[k]|');

数字信号处理上机实验dft

本科实验报告实验名称:数字信号处理上机实验作业1:用DFT 分析周期序列的频谱任务:设周期序列()cos(0.48)cos(0.52)xn n n ππ=+ 截取 N 点长得到 ()()()N x n x n R n = (1)N=10,做10点DFT ,得到 X1(k);(2)N=10,做100点补零DFT ,得到 X2(k); (3)N=100,做100点DFT ,得到 X3(k)。

要求:针对以上三种情况,分别输出|X1(k)|、|X2(k)|、|X3(k)|的图形,并进行比较、分析和讨论。

程序:clear all ; n=0:1000;xn=cos(pi*0.48*n)+cos(pi*0.52*n); Xk1=fft(xn(1:10),10); X1=abs(Xk1); subplot(3,1,1); stem(X1,'.'); xlabel('k'); ylabel('|X1(k)|'); title('N=10,10点DFT'); Xk2=fft(xn(1:10),100); X2=abs(Xk2); subplot(3,1,2); stem(X2,'.'); xlabel('k'); ylabel('|X2(k)|');title('N=10,100点补零DFT'); Xk3=fft(xn(1:100),100); X3=abs(Xk3); subplot(3,1,3); stem(X3,'.'); xlabel('k'); ylabel('|X3(k)|'); title('N=100,100点DFT');运行结果:k|X 1(k )|N=10,10点DFTk|X 2(k )|N=10,100点补零DFTk|X 3(k )|N=100,100点DFT分析:从幅度谱中我们可以明显看出,X1(k)的相邻谱线间隔大,栅栏效应明显,频率分辨率低。

FFT实验

FFT实验傅里叶变换(Fast Fourier Transform,FFT)是一种将时间域信号转换为频域信号的算法。

它在信号处理、图像处理、通信等领域得到广泛应用。

本实验将介绍FFT的原理,并提供一个简单的FFT实现程序。

一、傅里叶变换原理傅里叶变换是一种将连续时间域信号转换为连续频域信号的变换。

对于一个具有周期T的连续信号f(t),它的傅里叶变换F(w)可以表示为:F(w) = ∫[0,T] f(t) * exp(-j*w*t) dt其中,j是虚数单位,w是频率。

傅里叶变换的结果是一个复数函数,包含信号的幅度和相位信息。

在数字信号处理中,我们使用离散傅里叶变换(Discrete Fourier Transform,DFT)代替连续傅里叶变换。

离散傅里叶变换可以将离散时间域信号转换为离散频域信号。

对于一个N点采样的离散信号x(n),它的离散傅里叶变换X(k)可以表示为:X(k) = ∑[0,N-1] x(n) * exp(-j*2π*k*n/N)傅里叶变换的计算复杂度为O(n^2),而FFT是一种改进的傅里叶变换算法,可以将计算复杂度降低到O(n*logn)。

FFT通过将N点DFT分解为多个较小规模的DFT计算来实现。

以下提供一个使用C语言实现的简单FFT程序:#include <stdio.h>#include <math.h>int reverseBits(int num, int bits)int reversed = 0;for (int i = 0; i < bits; i++)reversed = (reversed << 1) , (num & 1); num >>= 1;}return reversed;void fft(double x[], double y[], int n) int bits = log2(n);for (int i = 0; i < n; i++)int j = reverseBits(i, bits);if (j < i)double temp = x[i];x[i]=x[j];x[j] = temp;temp = y[i];y[i]=y[j];y[j] = temp;}}for (int k = 2; k <= n; k <<= 1)int half = k >> 1;double wn_r = cos(2 * PI / k);double wn_i = sin(2 * PI / k);for (int i = 0; i < n; i += k)double w_r = 1.0;double w_i = 0.0;for (int j = 0; j < half; j++)double u_r = x[i + j];double u_i = y[i + j];double v_r = x[i + j + half] * w_r - y[i + j + half] * w_i; double v_i = x[i + j + half] * w_i + y[i + j + half] * w_r; x[i+j]=u_r+v_r;y[i+j]=u_i+v_i;x[i + j + half] = u_r - v_r;y[i + j + half] = u_i - v_i;double next_w_r = w_r * wn_r - w_i * wn_i;double next_w_i = w_i * wn_r + w_r * wn_i;w_r = next_w_r;w_i = next_w_i;}}}int maiint n = 8;double x[] = {0, 1, 2, 3, 4, 5, 6, 7};double y[] = {0, 0, 0, 0, 0, 0, 0, 0};fft(x, y, n);for (int i = 0; i < n; i++)printf("(%f, %f)\n", x[i], y[i]);}return 0;以上程序实现了一个8点FFT算法,可以将输入信号{x[0],x[1], ..., x[7]}转换为频域信号{X[0], X[1], ..., X[7]}。

数字信号处理实验一FFT变换及其应用

实验一 FFT变换及其应用一、实验目的和要求1.在理论课学习的基础上,通过本次实验,加深对DFT原理的理解,懂得频域DFT与时域卷积的关系,进一步加深对DFT基本性质的理解;2.研究FFT算法的主要途径和编程思路,掌握FFT算法及其程序的编写过程,掌握最基本的时域基-2FFT算法原理及程序框图;3.熟悉应用FFT实现两个序列的线性卷积的方法,利用FFT进行卷积,通过实验比较出快速卷积优越性,掌握循环卷积和线性卷积两者之间的关系;4.熟悉应用FFT对典型信号进行频谱分析的方法,初步了解用周期图法作随机信号谱分析的方法,了解应用FFT进行信号频谱分析过程中可能出现的问题,以便在实际中正确应用FFT;5.掌握使用MATLAB等基本开发工具实现对FFT编程。

二、实验设备和分组1.每人一台PC机;2.Windows 2000/XP以上版本的操作环境;3.MatLab 6.5及以上版本的开发软件。

三、实验内容(一)实验准备1.用FFT进行谱分析涉及的基础知识如下:信号的谱分析就是计算信号的傅里叶变换。

若信号是模拟信号,用FFT进行谱分析时,首先必须对信号进行采样,使之变成离散信号,然后用FFT来对连续信号进行谱分析。

若信号本身是有限长的序列,计算序列的频谱就是直接对序列进行FFT运算求得X(k),X(k)就代表了序列在[0,2]之间的频谱值。

幅度谱:相位谱:为避免产生混叠现象,采样频率fs应大于2倍信号的最高频率fc,为了满足采样定理,一般在采样之前要设置一个抗混叠低通滤波器。

用FFT 对模拟信号进行谱分析的方框图如下所示。

图1.1 FFT 对模拟信号进行谱分析的方框图2. 应用FFT 实现快速卷积涉及的基础知识如下: 一个信号序列x(n)与系统的卷积可表示为下式: Y(n)=x(n)*h(n)=∑+∞-∞=-m m n h m x )()(当是一个有限长序列,且0≤n ≤N-1时,有: Y(n)=∑-=-1)()(N n m n x m h此时就可以应用FFT 来快速计算有限长度序列的线性卷积。

数字信号处理实验三--用FFT

数字信号处理实验三--⽤FFT数字信号处理实验三--⽤FFT作谱分析XXXX ⼤学实验报告XXXX 年 XX ⽉ XX ⽇课程名称:数字信号处理实验名称:⽤FFT 作谱分析班级: XXXXXXXX 班学号: XXXXXXXX 姓名: XXXX实验三⽤FFT 作谱分析⼀、实验⽬的(1)进⼀步加深DFT 算法原理和基本性质的理解(因为FFT 只是DFT 的⼀种快速算法,所以FFT 的运算结果必然满⾜DFT 的基本性质);(2)熟悉FFT 算法的原理;(3)学习⽤FFT 对连续信号和时域离散信号进⾏谱分析的⽅法分析误差及其原因,以便在实际中正确应⽤FFT 。

⼆、实验内容(1)x(n)={1 0≤n ≤50 其他构造DFT 函数计算x(n)的10点DFT ,20点DFT并画出图形;(2)利⽤FFT 对下列信号逐个进⾏谱分析并画出图形 a 、x 1(n)=R 4(n); b 、x 2(n)=cos π4n ; c 、x 3(n)=sin π8n以上3个序列的FFT 变换区间N=8,16(2)设⼀序列中含有两种频率成份,f1=2HZ,f2=2.05HZ,采样频率取为fs =10HZ ,即 )/2sin()/2sin()(2 1ssf n f f n f n x ππ+=要区分出这两种频率成份,必须满⾜N>400,为什么?a.取x(n)(0≤n<128)时,计算x(n)的DFT X(k)b.将a 中的x (n )以补零⽅式使其加长到0≤n<512,计算X(k)c.取x(n)( 0≤n<512),计算X(k)(3)令)()()(32n x n x n x +=⽤FFT 计算16点离散傅⽴叶变换并画出图形,分析DFT 的对称性(4))()()(32n jx n x n x +=⽤FFT 计算16点离散傅⽴叶变换并画出图形,分析DFT 的对称性三、实验代码(1)1、代码function [Xk]=dft(xn,N)n=[0:1:N-1];k=[0:1:N-1]; WN=exp(-j*2*pi/N); nk=n'*k; WNnk=WN.^nk; Xk=xn*WNnk; %离散傅⽴叶变换⽅法定义N=10; %10点DFT n1=[0:N-1];x1=[ones(1,6),zeros(1,N-6)]; %⽣成1⾏6列的单位矩阵和1⾏N-6列的0矩阵Xk1=dft(x1,N); %10点DFT figure(1);subplot(2,1,1);stem(n1,x1); %画⽕柴图xlabel(‘n’);ylabel(‘x(n)’);subplot(2,1,2);stem(n1,abs(Xk1));xlabel(‘n’);ylabel(‘x(n)’);N=20;n2=[0:N-1];x2=[ones(1,6),zeros(1,14)];Xk2=dft(x2,N);figure(2);subplot(2,1,1);stem(n2,x2);xlabel(‘n’);ylabel(‘x(n)’);subplot(2,1,2);stem(n2,abs(Xk2));xlabel(‘n’);ylabel(‘x(n)’);2、运⾏结果图1 10点DFT图2 20点DFT3、结果分析定义x(n)的N 点DFT 为由定义知:DFT 具有隐含周期性,周期与DFT 的变换长度N ⼀致,这说明,变换长度不⼀样,DFT 的结果也不⼀样(2)1、代码10)()(10-≤≤=∑-=N k W n x k X N n nkNNjN eW π2-=其中N=64;n=[0:N-1];x1=[ones(1,4),zeros(1,N-4)];%定义x1(n)=R4(n)x2=cos((pi/4)*n); %定义nx2(n)=cosπ4x3=sin((pi/8)*n); %定义nx3(n)=sinπ8y1=fft(x1);y2=fft(x2);y3=fft(x3); %分别进⾏DFTfigure(1);m1=abs(y1);subplot(2,1,1); %绘制x1(n)的图形stem(n,x1);subplot(2,1,2); %绘制x1(n)的DFT图形stem(n,m1)figure(2);m2=abs(y2);subplot(2,1,1);stem(n,x2); %绘制x2(n)的图形subplot(2,1,2);stem(n,m2);%绘制x1(n)的DFT图形figure(3);m3=abs(y3);subplot(2,1,1);stem(n,x3); %绘制x3(n)的图形subplot(2,1,2);stem(n,m3); %绘制x1(n)的DFT图形2、运⾏结果图3 x1(n)的DFT前后图形图4 x2(n)的DFT 前后图形图 5 x3(n)的DFT前后图形3、结果分析由图可以看出,离散序列的DFT与对应连续函数的FT有对应关系,不同之处在于DFT的结果是离散的,⽽FT的结果是连续的,再者,DFT结果与DFT 的变换长度N有关。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

北京信息科技大学实验报告封面
实 验 报 告
课程名称: 数字信号
实验题目: 用DFT(FFT)对时域离散信号
进行频谱分析
系 (院): 光电学院
专 业: 光信息科学与技术
班 级: 光信0801
学生姓名: 靖鑫
学 号: 2008010750
指导教师:
罗倩

开课时间: 2010--2011学年 一 学期
实验五 用DFT(FFT)对时域离散信号进行频谱
分析
一、实验目的:
学习DFT的基本性质及对时域离散信号进行频谱分析的方法。
二、
给定参考实验信号如下:
x1(n)=R4(n)

x5(n): 用x1(n)=R4(n)以8为周期进行周期性延拓形成的周期序列。
(1) 分别以变换区间N=8, 16, 32,对x1(n)=R4(n)进行DFT(FFT), 画出相
应的幅频特性曲线;
(2) 分别以变换区间N=8, 16, 对x2(n), x3(n)分别进行DFT(FFT), 画出相
应的幅频特性曲线;
(3) 分别以变换区间N=4, 8, 16, 对x4(n)分别进行DFT(FFT), 画出相应的
幅频特性曲线;
(4) 对x5(n)进行频谱分析, 并选择变换区间, 画出幅频特性曲线。
三、实验报告
1.
(1) 用实验内容中的(1)分析DFT的变换区间对频域分析的作用,并说明DFT

(2) 对于试验内容(2),分析当N=8时,两个信号的幅频特性为什么一样,
而N=16
(3) 对于实验内容(3),x4(n)是一个周期信号,画出它的理论幅度频谱特性。
对照理论结果, 分析该周期信号的变换区间应该如何选取。如果周期信号的
周期预先不知道,如何用DFT
(4) 对于实验内容(4),对照理论结果分析实验结果。
2. 根据以上的实验内容和分析讨论,写出自己认为重要的几点结论。



其它 074 830 1)(2nnnnnx

nnxnnnnnx4cos)( 074 330 4)(43



其它
内容1..分别以变换区间N=8, 16, 32,对x1(n)=R4(n)进行DFT(FFT), 画出相
应的幅频特性曲线;
xn=[1 1 1 1 ];
Xk8=fft(xn,8);
Xk16=fft(xn,16);
Xk32=fft(xn,32);
k=0:7
subplot(321);stem(k,abs(Xk8),'.');
title('8点幅频');grid on;
xlabel('k');ylabel('幅度');
subplot(322);stem(k,angle(Xk8),'.');
title('8点相频');grid on;
xlabel('k');ylabel('相位');
k=0:15
subplot(323);stem(k,abs(Xk16),'.');
title('16点幅频');grid on;
xlabel('k');ylabel('幅度');
subplot(324);stem(k,angle(Xk16),'.');
title('16点相频');grid on;
xlabel('k');ylabel('相位');
k=0:31
subplot(325);stem(k,abs(Xk32),'.');
title('32点幅频');grid on;
xlabel('k');ylabel('幅度');axis([0,31,0,4]);
subplot(326);stem(k,angle(Xk32),'.');
title('32点相频');grid on;axis([0,31,-3,3]);
xlabel('k');ylabel('相位');
2.分别以变换区间N=8, 16, 对x3(n)分别进行DFT(FFT), 画出相
应的幅频特性曲线;
xn=[4 3 2 1 1 2 3 4];
Xk8=fft(xn,8);%计算8点fft
Xk16=fft(xn,16);%计算16点fft
k=0:7
subplot(221);stem(k,abs(Xk8),'.');
title('8点幅频');grid on;
xlabel('k');ylabel('幅度');
subplot(222);stem(k,angle(Xk8),'.');
title('8点相频');grid on;
xlabel('k');ylabel('相位');
k=0:15
subplot(223);stem(k,abs(Xk16),'.');
title('16点幅频');grid on;
xlabel('k');ylabel('幅度');
subplot(224);stem(k,angle(Xk16),'.');
title('16点相频');grid on;
xlabel('k');ylabel('相位');
分别以变换区间N=8, 16, 对x2(n)分别进行DFT(FFT), 画出相
应的幅频特性曲线;
xn=[1 2 3 4 4 3 2 1];
Xk8=fft(xn,8);%计算8点fft
Xk16=fft(xn,16);%计算16点fft
k=0:7
subplot(221);stem(k,abs(Xk8),'.');
title('8点幅频');grid on;
xlabel('k');ylabel('幅度');
subplot(222);stem(k,angle(Xk8),'.');
title('8点相频');grid on;
xlabel('k');ylabel('相位');
k=0:15
subplot(223);stem(k,abs(Xk16),'.');
title('16点幅频');grid on;
xlabel('k');ylabel('幅度');
subplot(224);stem(k,angle(Xk16),'.');
title('16点相频');grid on;
xlabel('k');ylabel('相位');
3..分别以变换区间N=8, 16, 对x2(n), x3(n)分别进行DFT(FFT), 画出相应的
幅频特性曲线;
n=0:50;
xn=cos(pi/4.*n);
Xk4=fft(xn,4);
Xk8=fft(xn,8);
Xk16=fft(xn,16);
k=0:3
subplot(321);stem(k,abs(Xk4),'.');
title('8点幅频');grid on;
xlabel('k');ylabel('幅度');
subplot(322);stem(k,angle(Xk4),'.');
title('8点相频');grid on;
xlabel('k');ylabel('相位');
k=0:7
subplot(323);stem(k,abs(Xk8),'.');
title('8点幅频');grid on;
xlabel('k');ylabel('幅度');
subplot(324);stem(k,angle(Xk8),'.');
title('8点相频');grid on;
xlabel('k');ylabel('相位');
k=0:15
subplot(325);stem(k,abs(Xk16),'.');
title('16点幅频');grid on;
xlabel('k');ylabel('幅度');
subplot(326);stem(k,angle(Xk16),'.');
title('16点相频');grid on;
xlabel('k');ylabel('相位');
4..对x5(n)进行频谱分析, 并选择变换区间, 画出幅频特性曲线。
xn=[1 1 1 1 0 0 0 0]
M=repmat(xn,1,8)
Xk8=fft(M,8);
k=0:7
subplot(211);stem(k,abs(Xk8),'.');
title('8点幅频');grid on;
xlabel('k');ylabel('幅度');
subplot(212);stem(k,angle(Xk8),'.');
title('8点相频');grid on;
xlabel('k');ylabel('相位');

相关文档
最新文档