数字信号处理实验五-用FFT做频谱分析
数字信号处理实验报告_完整版
实验1 利用DFT 分析信号频谱一、实验目的1.加深对DFT 原理的理解。
2.应用DFT 分析信号的频谱。
3.深刻理解利用DFT 分析信号频谱的原理,分析实现过程中出现的现象及解决方法。
二、实验设备与环境 计算机、MATLAB 软件环境 三、实验基础理论1.DFT 与DTFT 的关系有限长序列 的离散时间傅里叶变换 在频率区间 的N 个等间隔分布的点 上的N 个取样值可以由下式表示:212/0()|()()01N jkn j Nk N k X e x n eX k k N πωωπ--====≤≤-∑由上式可知,序列 的N 点DFT ,实际上就是 序列的DTFT 在N 个等间隔频率点 上样本 。
2.利用DFT 求DTFT方法1:由恢复出的方法如下:由图2.1所示流程可知:101()()()N j j nkn j nN n n k X e x n eX k W e N ωωω∞∞----=-∞=-∞=⎡⎤==⎢⎥⎣⎦∑∑∑ 由上式可以得到:IDFTDTFT( )12()()()Nj k kX e X k Nωπφω==-∑ 其中为内插函数12sin(/2)()sin(/2)N j N x eN ωωφω--= 方法2:实际在MATLAB 计算中,上述插值运算不见得是最好的办法。
由于DFT 是DTFT 的取样值,其相邻两个频率样本点的间距为2π/N ,所以如果我们增加数据的长度N ,使得到的DFT 谱线就更加精细,其包络就越接近DTFT 的结果,这样就可以利用DFT 计算DTFT 。
如果没有更多的数据,可以通过补零来增加数据长度。
3.利用DFT 分析连续信号的频谱采用计算机分析连续时间信号的频谱,第一步就是把连续信号离散化,这里需要进行两个操作:一是采样,二是截断。
对于连续时间非周期信号,按采样间隔T 进行采样,阶段长度M ,那么:1()()()M j tj nT a a a n X j x t edt T x nT e ∞--Ω-Ω=-∞Ω==∑⎰对进行N 点频域采样,得到2120()|()()M jkn Na a M kn NTX j T x nT eTX k ππ--Ω==Ω==∑因此,可以将利用DFT 分析连续非周期信号频谱的步骤归纳如下: (1)确定时域采样间隔T ,得到离散序列(2)确定截取长度M ,得到M 点离散序列,这里为窗函数。
实验应用FFT对信号进行频谱分析
20090401310074 海南大学实验二 应用FFT 对信号进行频谱分析一、实验目的1、进一步加深DFT 算法原理和基本性质的理解(因为FFT 只是DFT 的一种快速算法, 所以FFT 的运算结果必然满足DFT 的基本性质)。
2、学习用FFT 对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便在实际中正确应用FFT 。
二、实验原理i.模拟信号频率Ω和采样得到的数字信号频率ω的关系:/s T f ω=Ω=Ωii.DTFT 与对应的理想采样信号的频谱之间的对应关系为:|^()()jw a T X j X e ω=ΩΩ=即DTFT 与FT 的关系为:12()[()]j a r X e X j r T T Tωωπ∞=-∞=-∑就是说,只要知道了采样序列的频谱,就可以得到相应的连续信号的频谱。
(满足耐奎斯特采样定理)iii.DFT 是对离散时间序列的频域采样,是对ZT 上单位圆上的均匀采样,或者是DTFT 上[0,2]π的等间距采样。
当满足频域的采样定理时,便可以由频域的采样值恢复ZT 或者是DTFT 。
所以能用DFT 对信号进行频谱分析。
当采样的点数足够时,便能用它的包络作为模拟信号的近似谱。
近似的过程中,可能会有混叠现象,泄露现象和栅栏效应这三种误差。
iv.离散傅立叶变换DFT :10()(),0,1,2...,1N nkN n X k x n W k N -===-∑[]101()()(),0,1,2...,1N nkN n x n IDFT X k X k W n N N --====-∑反变换与正变换的区别在于N W 变为1-N W ,并多了一个N 1的运算。
因为N W 和1-N W 对于推导按时间抽取的快速傅立叶变换算法并无实质性区别,因此借助FFT 来实现IFFT.三、实验内容和结果:1. 高斯序列的时域和频域特性:高斯序列的时域表达式:2(),015()0,n p q a e n x n -⎧⎪≤≤=⎨⎪⎩其它i. 固定参数p=8,改变参数q 的值,记录时域和频域的特性如下图。
实验五 利用DFT分析模拟信号频谱
w=0.54-0.46*cos(2*pi*k/(N-1)); x=y.*w; Xm=fft(x,N)/N; %利用FFT计算其频谱 f=(-(N-1)/2:(N-1)/2)/N/T; %若N为偶数f=1/T/N*(-(N/2):(N/2-1)); subplot(2,1,2); stem(f,abs(fftshift(Xm)));%画出幅度谱 xlabel('f(Hz)'); ylabel('magnitude'); title('幅度谱增加hamming窗后分析 N=?');
3.fsam=440;Tp=0.4;N=55;T=1/fsam; t=0:T:Tp; f1=100;f2=110; x=cos(2*pi*f1*t)+sin(2*pi*f2*t);%周期信号 Xm=fft(x,N)/N; %利用FFT计算其频谱 f=(-(N-1)/2:(N-1)/2)/N/T; %若N为偶数f=1/T/N*(-(N/2):(N/2-1)); subplot(2,1,1); stem(f,abs(fftshift(Xm)));%画出幅度谱 xlabel('f(Hz)'); ylabel('magnitude'); title('幅度谱 N=440'); %使用hamming对信号进行频谱分析 fsam=440;Tp=0.4;N=55;T=1/fsam; t=0:T:Tp; N=Tp/T+1; f1=100;f2=110; y=cos(2*pi*f1*t)+0.75*sin(2*pi*f2*t);%周期信号 %选择非矩形窗hamming窗分析
已知周期信号 x
t cos10t 2 sin 18t ,计算其频谱。
利用FFT对信号进行频谱分析
∑-=--==101,....,0,)(1)(N k nk N N n W k X N n x (3.2) 离散傅立叶反变换与正变换的区别在于N W 变为1-N W ,并多了一个N 1的运算。
因为N W 和1-N W 对于推导按时间抽取的快速傅立叶变换算法并无实质性区别,因此可将FFT 和快速傅立叶反变换(IFFT )算法合并在同一个程序中。
2.利用FFT 进行频谱分析若信号本身是有限长的序列,计算序列的频谱就是直接对序列进行FFT 运算求得)(k X ,)(k X 就代表了序列在[]π2,0之间的频谱值。
幅度谱 )()()(22k X k X k X I R +=相位谱 )()(arctan )(k X k X k R I =ϕ 若信号是模拟信号,用FFT 进行谱分析时,首先必须对信号进行采样,使之变成离散信号,然后就可按照前面的方法用FFT 来对连续信号进行谱分析。
按采样定理,采样频率s f 应大于2倍信号的最高频率,为了满足采样定理,一般在采样之前要设置一个抗混叠低通滤波器。
用FFT 对模拟信号进行谱分析的方框图如下所示。
3.在运用DFT 进行频谱分析的过程中可能产生三种误差:(1)混叠序列的频谱是被采样信号频谱的周期延拓,当采样速率不满足Nyquist 定理时,就会发生频谱混叠,使得采样后的信号序列频谱不能真实的反映原信号的频谱。
避免混叠现象的唯一方法是保证采样速率足够高,使频谱混叠现象不致出现,即在确定采样频率之前,必须对频谱的性质有所了解。
在一般情况下,为了保证不出现频谱混叠,在采样前,先进行抗混叠滤波。
(2)泄漏实际中我们往往用截短的序列来近似很长的甚至是无限长的序列,这样可以使用较短的DFT 来对信号进行频谱分析,这种截短等价于给原信号序列乘以一个矩形窗函数,也相当于在频域将信号的频谱和矩形窗函数的频谱卷积,所得的频谱是原序列频谱的扩展。
抗混叠低通滤波器 采样T=1/f s N 点FFT泄漏不能与混叠完全分开,因为泄漏导致频谱的扩展,从而造成混叠。
实验五 用FFT对信号做频谱分析(数字信号实验)
备注:(1)、按照要求独立完成实验内容。
(2)、实验结束后,把电子版实验报告按要求格式改名,由实验教师批阅记录后;实验室统一刻盘留档。
实验五 用FFT 对信号做频谱分析一、实验目的学习用FFT 对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便正确应用FFT 。
二、实验原理用FFT 对信号作频谱分析是学习数字信号处理的重要内容。
经常需要进行谱分析的信号是模拟信号和时域离散信号。
对信号进行谱分析的重要问题是频谱分辨率D 和分析误差。
频谱分辨率直接和FFT 的变换区间N 有关,因为FFT 能够实现的频率分辨率是 ,因此要求 。
可以根据此式选择FFT 的变换区间N 。
误差主要来自于用FFT 作频谱分析时,得到的是离散谱,而信号(周期信号除外)是连续谱,只有当N 较大时离散谱的包络才能逼近于连续谱,因此N 要适当选择大一些。
周期信号的频谱是离散谱,只有用整数倍周期的长度作FFT ,得到的离散谱才能代表周期信号的频谱。
如果不知道信号周期,可以尽量选择信号的观察时间长一些。
对模拟信号进行谱分析时,首先要按照采样定理将其变成时域离散信号。
如果是模拟周期信号,也应该选取整数倍周期的长度,经过采样后形成周期序列,按照周期序列的谱分析进行。
三、实验内容(包括代码与产生的图形及分析讨论)1. 对以下序列进行谱分析:1423()()1,03()8,470, 4,03()3,470, x n R n n n x n n n n n n x n n n n=+≤≤⎧⎪=-≤≤⎨⎪⎩-≤≤⎧⎪=-≤≤⎨⎪⎩选择FFT 的变换区间N 为8和16 两种情况进行频谱分析。
分别打印其幅频特性曲线, 并进行对比、分析和讨论。
解:(1))(1n x 代码如下:x1n=[ones(1,4)]; X1k8=fft(x1n,8); X1k16=fft(x1n,16); subplot(2,1,1);mstem(X1k8);title('(1a) 8µãDFT[x_1(n)]');xlabel('¦Ø/¦Ð');ylabel('·ù¶È'); axis([0,2,0,1.2*max(abs(X1k8))]) subplot(2,1,2);mstem(X1k16);title('(1b)16µãDFT[x_1(n)]');xlabel('¦Ø/¦Ð');ylabel('·ù¶È'); axis([0,2,0,1.2*max(abs(X1k16))])图形如下:ω/π幅度(1a) 8点DFT[x 1(n)]ω/π幅度(1b)16点DFT[x 1(n)](2))(2n x 代码如下:M=8;xa=1:(M/2); xb=(M/2):-1:1; x2n=[xa,xb];X2k8=fft(x2n,8); X2k16=fft(x2n,16); subplot(2,1,1);mstem(X2k8);title('(2a) 8点DFT[x_2(n)]');xlabel('ω/π');ylabel('幅度'); axis([0,2,0,1.2*max(abs(X2k8))]) subplot(2,1,2);mstem(X2k16);title('(2b)16点DFT[x_2(n)]');xlabel('ω/π');ylabel('幅度'); axis([0,2,0,1.2*max(abs(X2k16))])图形如下:ω/π幅度(2a) 8点DFT[x 2(n)]ω/π幅度(2b)16点DFT[x 2(n)](3))(3n x 代码如下:x3n=[xb,xa];X3k8=fft(x3n,8); X3k16=fft(x3n,16); subplot(2,1,1);mstem(X3k8);title('(3a) 8点DFT[x_3(n)]');xlabel('ω/π');ylabel('幅度'); axis([0,2,0,1.2*max(abs(X3k8))]) subplot(2,1,2);mstem(X3k16);title('(3b)16点DFT[x_3(n)]');xlabel('ω/π');ylabel('幅度'); axis([0,2,0,1.2*max(abs(X3k16))])图形如下:ω/π幅度(3a) 8点DFT[x 3(n)]ω/π幅度(3b)16点DFT[x 3(n)]2.对以下周期序列进行谱分析:选择FFT 的变换区间N 为8和16 两种情况分别对以上序列进行频谱分析。
数字信号处理实验五 用FFT做 频谱分析
波形如下:
波形如下:
(2) 用FFT计算下面连续信号的频谱,并观察选择不 同的采样周期Ts和序列长度N值对频谱特性的影响: 程序如下:
clear;close all fs=4;T=1/fs; Tp=4;N=Tp*fs; N1=[N,4*N,8*N]; T1=[T,2*T,4*T]; for m=1:3
n=1:N1(m); x1=exp(-0.01*T); x2=sin(2*n*T)+sin(2.1*n*T)+sin(2.2*n*T); x=x1*x2; xk=fft(x,51) fk=[0:50]/51/T subplot(3,2,2*m-1); stem(fk,abs(xk)/max(abs(xk)),'k.'); xlabel(T1(m)); ylabel(N1(m)); if m==1
实验内容: (1)已知有限长序列x(n)=[1,0.5,0,0.5,1,1,0.5,0],要求: 用FFT求该序列的DFT、IDFT的图形。 程序如下:
xn=[1,0.5,0,0.5,1,1,0.5,0]; n=length(xn); k=0:n-1; subplot(2,2,1); stem(k,xn,'k.'); title('x(n)'); Xk=fft(xn,n); subplot(2,1,2); stem(k,abs(Xk)); title('Xk=DFT(xn)'); xn1=ifft(Xk,n); subplot(2,2,2);
title('序列长度') end end for m=1:3 n=1:14; x1=exp(-0.01*T1(m)); x2=sin(2*n*T1(m))+sin(2.1*n*T1(m))+sin(2.2*n*T1(m)); x=x1*x2; xk=fft(x,51) fk=[0:50]/51/T subplot(3,2,2*m); stem(fk,abs(xk)/max(abs(xk)),'k.'); xlabel(T1(m)); ylabel(N1(m)); if m==1
用FFT对信号作频谱分析
实验二用FFT对信号作频谱分析一、实验目的(1)学习使用FFT对模拟信号和时域离散信号进行频谱分析的方法(2)了解可能出现的分析误差及其原因,以便正确应用FFT二、实验内容:(1)根据参考资料使用FFT进行谐波分析;利用函数生成一组数据,用以模拟电力现场的测量数据,使用FFT对其进行频谱分析;程序:clearfs=1000;t=0:1/fs:0.6;f1=100;f2=300;x1=sin(2*pi*f1*t); %正弦信号x1x2=sin(2*pi*f2*t); %正弦信号x2x=x1+x2;l=length(x);xx=x+randn(1,l); %叠加随机噪声信号figure(1)subplot(7,1,1)plot(x1);subplot(7,1,2)plot(x2);subplot(7,1,3)plot(x);subplot(7,1,4)plot(xx);number=512;y=fft(x,number); %对x取512点的快速傅里叶变换n=0:length(y)-1;f=fs*n/length(y);subplot(7,1,5)plot(f,abs(y));yy=fft(xx,number); %对xx取512点的快速傅里叶变换subplot(7,1,6)plot(f,abs(yy));pyy=y.*conj(y)/number; %y的能量subplot(7,1,7)plot(f,abs(pyy));实验结果见附图1(2)使用操作系统自带的录音机,录制各种声音,保存成.wav文件;将该声音文件读入(采样保存到)某矩阵中,对该采样信号使用FFT进行频谱分析,比较各种语音信号所包含的频谱成分及频率范围。
程序:number=512;fs=1000;x=wavread('你自己的音频名,如a.wav');%读取音频文件y=fft(x,number); %对x取512点的傅里叶变换n=0:length(y)-1;f=fs*n/length(y);subplot(2,1,1)plot(f,abs(y));pyy=y.*conj(y)/number; %y的能量subplot(2,1,2)plot(f,abs(pyy));实验结果见附图2三、实验结论由实验结果可以看出,实验得到了FFT对模拟信号和时域离散信号进行频谱分析的结果。
用fft对信号作频谱分析的程序
用fft对信号作频谱分析的程序实验(1)function shiyan1x1=[1,1,1,1];n1=0:3;n2=4:7;xa=n1+1;xb=8-n2;x2=[xa,xb];xa1=4-n1;xb1=n2-3;x3=[xa1,xb1];X18=fft(x1,8);k1=0:8-1;subplot(3,2,1);stem(k1,abs(X18),'.'); axis([0,8,0,1.2*max(abs(X18))]); title('8点DFT[x1]');ylabel('幅度');X116=fft(x1,16);k2=0:16-1;subplot(3,2,2);stem(k2,abs(X116),'.'); axis([0,16,0,1.2*max(abs(X116))]); title('16点DFT[x1]');ylabel('幅度');X28=fft(x2,8);subplot(3,2,3);stem(k1,abs(X28),'.'); axis([0,8,0,1.2*max(abs(X28))]); title('8点DFT[x2]');ylabel('幅度');X216=fft(x2,16);subplot(3,2,4);stem(k2,abs(X216),'.'); axis([0,16,0,1.2*max(abs(X216))]); title('16点DFT[x2]');ylabel('幅度');X38=fft(x3,8);subplot(3,2,5);stem(k1,abs(X38),'.'); axis([0,8,0,1.2*max(abs(X38))]); title('8点DFT[x3]');ylabel('幅度');X316=fft(x3,16);subplot(3,2,6);stem(k2,abs(X316),'.'); axis([0,16,0,1.2*max(abs(X316))]); title('16点DFT[x3]');ylabel('幅度');实验(2)function shiyan2n1=0:8-1;n2=0:16-1;x48=cos(pi/4*n1);x58=cos(pi/4*n1)+cos(pi/8*n1); x416=cos(pi/4*n2);x516=cos(pi/4*n2)+cos(pi/8*n2);X48=fft(x48,8);X416=fft(x416,16);X58=fft(x58,8);X516=fft(x516,16);k1=0:8-1;k2=0:16-1;subplot(2,2,1);stem(k1,abs(X48),'.'); axis([0,8,0,5]);title('8点DFT[x4]');ylabel('幅度');subplot(2,2,2);stem(k2,abs(X416),'.'); axis([0,16,0,10]); title('16点DFT[x4]');ylabel('幅度');subplot(2,2,3);stem(k1,abs(X58),'.'); axis([0,8,0,10]);title('8点DFT[x5]');ylabel('幅度');subplot(2,2,4);stem(k2,abs(X516),'.'); axis([0,16,0,10]); title('16点DFT[x5]');ylabel('幅度');实验(3)function shiyan3Fs=64;T=1/Fs;N1=16;N2=32;N3=64;n1=0:N1-1;n2=0:N2-1;n3=0:N3-1;x816=cos(8*pi*n1*T)+cos(16*pi*n1*T)+cos(20*pi*n1*T); x832=cos(8*pi*n2*T)+cos(16*pi*n2*T)+cos(20*pi*n2*T); x864=cos(8*pi*n3*T)+cos(16*pi*n3*T)+cos(20*pi*n3*T); X816=fft(x816,16);X816=fftshift(X816);X832=fft(x832,32);X832=fftshift(X832);X864=fft(x864,64);X864=fftshift(X864);Tp=N1*T;F=1/Tp;k=-N1/2:N1/2-1;fk=k*F;subplot(3,1,1);stem(fk,abs(X816),'.'); title('16点DFTx8');xlabel('f(Hz)');ylabel('幅度');Tp=N2*T;F=1/Tp;k=-N2/2:N2/2-1;fk=k*F;subplot(3,1,2);stem(fk,abs(X832),'.'); title('32点DFTX8');xlabel('f(Hz)');ylabel('幅度');Tp=N3*T;F=1/Tp;k=-N3/2:N3/2-1;fk=k*F;subplot(3,1,3);stem(fk,abs(X864),'.'); title('64点DFTX8');xlabel('f(Hz)');ylabel('幅度');。
用FFT作谱分析实验报告
数字信号处理 实验报告FFT 的谱分解一、实验目的:1、在理论学习的基础上,通过本实验,加深对FFT 的理解,熟悉MATLAB 中的有关函数。
2、熟悉应用FFT 对典型信号进行频谱分析的方法。
熟悉FFT 算法原理和FFT 子程序的应用。
3、学习用FFT 对连续信号和时域离散信号进行谱分析的方法。
了解应用FFT 进行信号频谱分析过程中可能出现的问题,以便在实际中正确应用FFT 。
二、实验原理:1.快速傅立叶变换(FFT)算法长度为N 的序列)(n x 的离散傅立叶变换)(k X 为:∑-=-==101,....,0,)()(N n nkN N k W n x k XN 点的DFT 可以分解为两个N/2点的DFT ,每个N/2点的DFT 又可以分解为两个N/4点的DFT 。
依此类推,当N 为2的整数次幂时(M N 2=),由于每分解一次降低一阶幂次,所以通过M 次的分解,最后全部成为一系列2点DFT 运算。
以上就是按时间抽取的快速傅立叶变换(FFT)算法。
当需要进行变换的序列的长度不是2的整数次方的时候,为了使用以2为基的FFT ,可以用末尾补零的方法,使其长度延长至2的整数次方。
序列)(k X 的离散傅立叶反变换为x n NX k Wn N Nnk k N ()(),,....,==--=-∑10101离散傅立叶反变换与正变换的区别在于N W 变为1-N W ,并多了一个N 1的运算。
因为N W 和1-N W 对于推导按时间抽取的快速傅立叶变换算法并无实质性区别,因此可将FFT 和快速傅立叶反变换(IFFT )算法合并在同一个程序中。
2.利用FFT 进行频谱分析若信号本身是有限长的序列,计算序列的频谱就是直接对序列进行FFT 运算求得)(k X ,)(k X 就代表了序列在[]π2,0之间的频谱值。
幅度谱 )()()(22k X k X k X I R +=相位谱 )()(arctan)(k X k X k R I =ϕ 若信号是模拟信号,用FFT 进行谱分析时,首先必须对信号进行采样,使之变成离散信号,然后就可按照前面的方法用FFT 来对连续信号进行谱分析。
数字信号处理实验报告_完整版
实验1 利用DFT 分析信号频谱一、实验目的1.加深对DFT 原理的理解。
2.应用DFT 分析信号的频谱。
3.深刻理解利用DFT 分析信号频谱的原理,分析实现过程中出现的现象及解决方法。
二、实验设备与环境 计算机、MATLAB 软件环境 三、实验基础理论1.DFT 与DTFT 的关系有限长序列x (n )(0≤n ≤N −1)的离散时间傅里叶变换X (e jω)在频率区间(0≤ω≤2π)的N 个等间隔分布的点kω=2πk /N (0≤k ≤N −1)上的N 个取样值可以由下式表示:212/0()|()()01N jkn j Nk N k X e x n eX k k N πωωπ--====≤≤-∑由上式可知,序列x (n )的N 点DFT X k ,实际上就是x (n )序列的DTFT 在N 个等间隔频率点kω=2πk /N (0≤k ≤N −1)上样本X k 。
2.利用DFT 求DTFT方法1:由恢复出的方法如下:由图2.1所示流程可知:101()()()N j j nkn j nN n n k X e x n eX k W e N ωωω∞∞----=-∞=-∞=⎡⎤==⎢⎥⎣⎦∑∑∑ 由上式可以得到:IDFTDTFTX (ejω)12()()()Nj k kX e X k Nωπφω==-∑ 其中为内插函数12sin(/2)()sin(/2)N j N x eN ωωφω--= 方法2:实际在MATLAB 计算中,上述插值运算不见得是最好的办法。
由于DFT 是DTFT 的取样值,其相邻两个频率样本点的间距为2π/N ,所以如果我们增加数据的长度N ,使得到的DFT 谱线就更加精细,其包络就越接近DTFT 的结果,这样就可以利用DFT 计算DTFT 。
如果没有更多的数据,可以通过补零来增加数据长度。
3.利用DFT 分析连续信号的频谱采用计算机分析连续时间信号的频谱,第一步就是把连续信号离散化,这里需要进行两个操作:一是采样,二是截断。
实验三:用FFT对信号作频谱分析_实验报告
实验三:用FFT对信号作频谱分析_实验报告一、实验目的:掌握用FFT对信号作频谱分析的方法。
二、实验仪器:1、计算机;2、MATLAB软件。
三、实验原理:FFT即快速傅里叶变换,是一种用来处理数字信号的算法,其将一个信号从时域(即时间域)中转换到了频域中。
傅里叶变换可以将时域上的信号转换到频域上,分析其中的各频率分量,以及各分量的大小、相位等。
由于实验过程较为简单,这里就不展开讲解。
四、实验内容:假设现在有一个包含了多种频率成分的信号,要求对其进行频谱分析。
五、实验步骤:(1)生成信号,此处生成的信号包含了2种频率成分。
```Fs=2000; %采样率T=1/Fs; %采样周期N=1024; %采样点数t=(0:N-1)*T; %时域采样点f1=150; %第一个频率成分f2=600; %第二个频率成分x=sin(2*pi*f1*t)+0.3*sin(2*pi*f2*t); %合成信号```(2)做傅里叶变换,将信号转换到频域。
```Y=fft(x); %做傅里叶变换P2=abs(Y/N); %取模P1=P2(1:N/2+1); %取单边谱P1(2:end-1)=2*P1(2:end-1); %翻倍f=Fs*(0:(N/2))/N; %频率点```(3)画出频谱图并分析。
```figuresubplot(2,1,1);plot(t,x);title('时域波形');xlabel('时间/s');ylabel('幅值/V');subplot(2,1,2);plot(f,P1,'r');title('频域谱图');xlabel('频率/Hz');ylabel('幅值/V');```六、实验结果分析:根据实验结果,可以看出原信号中包含的频率成分明显,且经过傅里叶变换后的频域谱图也反映出了信号中各个频率成分的大小和出现的频率位置。
哈工大 数字信号处理实验报告
实验一: 用FFT 作谱分析实验目的:(1) 进一步加深DFT 算法原理和基本性质的理解(因为FFT 只是DFT 的一种快速算法, 所以FFT 的运算结果必然满足DFT 的基本性质)。
(2) 熟悉FFT 算法原理和FFT 子程序的应用。
(3) 学习用FFT 对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便在实际中正确应用FFT 。
实验原理: DFT 的运算量:一次完整的DFT 运算总共需要2N 次复数乘法和(1)N N -复数加法运算,因而直接计算DFT 时,乘法次数和加法次数都和2N 成正比,当N 很大时,运算量很客观的。
例如,当N=8时,DFT 运算需64位复数乘法,当N=1024时,DFT 运算需1048576次复数乘法。
而N 的取值可能会很大,因而寻找运算量的途径是很必要的。
FFT 算法原理:大多数减少离散傅里叶变换运算次数的方法都是基于nk N W 的对称性和周期性。
(1)对称性()*()k N n kn knNN NW W W --==(2)周期性kn Nkn n N kn k NNN NNW W W W ++===由此可得()()/2(/2)1n N k N n k nk N N N N N k N k N N W W W W W W ---+⎧==⎪=-⎨⎪=-⎩这样:1.利用第三个方程的这些特性,DFT 运算中有些项可以合并;2.利用nk N W 的对称性和周期性,可以将长序列的DFT 分解为短序列的DFT 。
前面已经说过,DFT 的运算量是与2N 成正比的,所以N 越小对计算越有利,因而小点数序列的DFT 比大点数序列的DFT 运算量要小。
快速傅里叶变换算法正是基于这样的基本思路而发展起来的,她的算法基本上可分成两大类,即按时间抽取法和按频率抽取法。
我们最常用的是2M N =的情况,该情况下的变换成为基2快速傅里叶变换。
完成一次完整的FFT 计算总共需要2log 2N N次复数乘法运算和2log N N 次复数加法运算。
用FFT对信号作频谱分析实验报告
用FFT对信号作频谱分析实验报告实验目的:利用FFT对信号进行频谱分析,掌握FFT算法的原理及实现方法,并获取信号的频谱特征。
实验仪器与设备:1.信号发生器2.示波器3.声卡4.计算机实验步骤:1.将信号发生器与示波器连接,调节信号发生器的输出频率为待测信号频率,并将示波器设置为XY模式。
2.将示波器的输出接口连接至声卡的输入接口。
3.打开计算机,运行频谱分析软件,并将声卡的输入接口设置为当前输入源。
4.通过软件选择频谱分析方法为FFT,并设置采样率为合适的数值。
5.通过软件开始进行频谱分析,记录并保存频谱图像和数据。
实验原理:FFT(快速傅里叶变换)是一种计算机算法,用于将时域信号转换为频域信号。
它通过将一个信号分解成多个不同频率的正弦波或余弦波的合成,并计算每个频率分量的幅度和相位信息。
实验结果与分析:通过对待测信号进行FFT频谱分析,我们可以得到信号在频域上的频谱特征。
频谱图像可以展示出信号中不同频率成分的能量分布情况,可以帮助我们了解信号的频率构成及其相对重要程度。
在实验中,我们可以调节信号发生器的输出频率,观察频谱图像的变化。
当信号频率与采样率相等时,我们可以得到一个峰值,表示信号的主频率。
同时,我们还可以观察到其他频率分量的存在,其幅度与信号频率的差距越小,幅度越低。
通过对不同信号进行频谱分析,我们可以了解信号的频率成分及其分布情况。
这对于信号处理、通信等领域具有重要意义。
实验结论:通过FFT频谱分析,我们可以获得信号在频域上的频谱特征,可以清晰地观察到信号的主频率以及其他频率分量的存在。
这为信号处理及相关应用提供了有价值的信息。
实验中,我们使用了信号发生器、示波器、声卡和计算机等设备,通过连接和软件进行了频谱分析实验。
通过实验,我们掌握了FFT算法的原理及实现方法,并且获取到了信号的频谱特征。
然而,需要注意的是,频谱分析仅能得到信号在其中一时刻或一段时间内的频率成分,不能得到信号的时域信息。
应用FFT对信号进行频谱分析
(2—6)
即序列的频谱是采样信号频谱的周期延拓。从上式可看出,只 要分析采样序列的频谱,就可以得到相应的连续信号的频谱。 在各种信号序列中,有限长序列在数字信号处理中占有很重要 的地位。无限长的序列往往可以用有限长序列来逼近。对于有限长 的序列我们可以用离散傅里叶变换(DFT) ,这一变换可以很好的反 映序列的频域特性,并且容易利用快速算法在计算机中实现当序列 长度是 N 时,我们定义离散傅里叶变换为
kn X (k ) DFT[ x(n)] WN n 0 N 1
(2—7)
其中 WNkn = e
j
2 N
,它的反变换定义为:
1 N 1 X (k )WNkn N k 0
x(n) IDFT[ X (k )]
(2—8)
根据以上两式,令 Z= Z= WNk X(z)
N 1 n 0
3、观察三角波序列和反三角波序列的时域和幅频特性
(1)用 8 点 FFT 分析信号 xc(n)和 xd(n)的幅频特性,观察两者的序 列形状和频谱曲线有什么异同?绘制两者的序列和幅频特性曲线
>> for i=1:4;%设置信号前 4 个点的数值 x(i)=i; end fori=5:8; x(i)=9-i; end close all; subplot(2,2,1);stem(x);title('xc[n]信号图形'); subplot(2,2,2);stem(abs(fft(x,16)));title('xc[n]信号的频谱') for i=1:4;%设置信号前 4 个点的数值 x(i)=5-i;
(2—3)
当 Z= e j 的时候,我们就得到了序列的傅里叶变换
数字信号处理实验报告_完整版
实验1 利用DFT 分析信号频谱一、实验目的1.加深对DFT 原理的理解。
2.应用DFT 分析信号的频谱。
3.深刻理解利用DFT 分析信号频谱的原理,分析实现过程中出现的现象及解决方法。
二、实验设备与环境 计算机、MATLAB 软件环境 三、实验基础理论1.DFT 与DTFT 的关系有限长序列 的离散时间傅里叶变换 在频率区间 的N 个等间隔分布的点 上的N 个取样值可以由下式表示:212/0()|()()01N jkn j Nk N k X e x n eX k k N πωωπ--====≤≤-∑由上式可知,序列 的N 点DFT ,实际上就是 序列的DTFT 在N 个等间隔频率点 上样本 。
2.利用DFT 求DTFT方法1:由恢复出的方法如下:由图2.1所示流程可知:101()()()N j j nkn j nN n n k X e x n eX k W e N ωωω∞∞----=-∞=-∞=⎡⎤==⎢⎥⎣⎦∑∑∑ 由上式可以得到:IDFTDTFT( )12()()()Nj k kX e X k Nωπφω==-∑ 其中为内插函数12sin(/2)()sin(/2)N j N x eN ωωφω--= 方法2:实际在MATLAB 计算中,上述插值运算不见得是最好的办法。
由于DFT 是DTFT 的取样值,其相邻两个频率样本点的间距为2π/N ,所以如果我们增加数据的长度N ,使得到的DFT 谱线就更加精细,其包络就越接近DTFT 的结果,这样就可以利用DFT 计算DTFT 。
如果没有更多的数据,可以通过补零来增加数据长度。
3.利用DFT 分析连续信号的频谱采用计算机分析连续时间信号的频谱,第一步就是把连续信号离散化,这里需要进行两个操作:一是采样,二是截断。
对于连续时间非周期信号,按采样间隔T 进行采样,阶段长度M ,那么:1()()()M j tj nT a a a n X j x t edt T x nT e ∞--Ω-Ω=-∞Ω==∑⎰对进行N 点频域采样,得到2120()|()()M jkn Na a M kn NTX j T x nT eTX k ππ--Ω==Ω==∑因此,可以将利用DFT 分析连续非周期信号频谱的步骤归纳如下: (1)确定时域采样间隔T ,得到离散序列(2)确定截取长度M ,得到M 点离散序列,这里为窗函数。
数字信号处理实验:利用FFT分析连续信号频谱
数字信号处理课程实验实验报告实验一 利用FFT 分析连续信号频谱一、 实验目的1、 进一步加深离散傅里叶变换DFT 原理的理解;2、 应用离散傅里叶变换DFT (实际应用FFT 计算)分析连续信号的频谱;3、 深刻理解利用DFT 分析连续信号的频谱的原理,分析工程中常出现的现象及解决方法。
二、 实验原理1、 利用DFT 分析连续时间周期信号的频谱周期为Tp 的周期性连续时间信号)(t x p 的频谱(傅里叶级数的系数))(Ωjk x p 是非周期离散谱,定义为)(Ωjk x p =dt e t x p1tjk p p 0Ω-⎰)(T T 其中f 2p2ππ==ΩT 为信号的基频,Ωk 为信号的谐频,谱线间隔为Ω。
通过时域采样就可以利用DFT 分析连续周期信号的频谱。
其步骤为: ① 确定周期信号的基本周期Tp ;② 计算一个周期内的采样点数N ,若周期信号的最高频谱为Ωp ,则频谱中有2p+1 根谱线;若周期信号的频谱无限宽,则认为集中信号90%以上(或根据实际需要)能量的前p+1 个谐波为近似的频谱范围,其余的谐波忽略不计。
取N ≥2p+1; ③ 对连续周期信号以采样间隔NT T p=进行采样 ; ④ 利用FFT 计算采样信号的N 点DFT ,得到()k X ; ⑤ 最后求出连续周期信号的频谱为)(Ωjk x p =N1()k X 。
因为对连续周期信号按采样间隔NT T p=进行采样,每个周期抽取N 点时,则有 t=nT ,Tp=NT那么 )(Ωjk x p =dt et x p 1tjk p p 0Ω-⎰)(T T =∑-=-10n n p 2jk e n x p N T T T T T π)( =∑-=-1n n N 2jk e n x N 1N T π)(=)(k N 1X若能按照满足采样定理的采样间隔进行抽样,并且采取整周期为信号分析的长度,则利用FFT 计算得到的离散频谱值等于连续周期信号频谱)(Ωjk x p 的准确值。
数字信号处理实验五用DFT(FFT)对信号进行频谱分析
开课学院及实验室:电子楼3172018年 4月 29 日3()x n :用14()()x n R n =以8为周期进行周期性延拓形成地周期序列.(1> 分别以变换区间N =8,16,32,对14()()x n R n =进行DFT(FFT>,画出相应地幅频特性曲线;(2> 分别以变换区间N =4,8,16,对x 2(n >分别进行DFT(FFT>,画出相应地幅频特性曲线; (3> 对x 3(n >进行频谱分析,并选择变换区间,画出幅频特性曲线.<二)连续信号 1. 实验信号:1()()x t R t τ=选择 1.5ms τ=,式中()R t τ地波形以及幅度特性如图7.1所示.2()sin(2/8)x t ft ππ=+式中频率f 自己选择.3()cos8cos16cos 20x t t t t πππ=++2. 分别对三种模拟信号选择采样频率和采样点数.对1()x t ()R t τ=,选择采样频率4s f kHz =,8kHz ,16kHz ,采样点数用τ.s f 计算.对2()sin(2/8)x t ft ππ=+,周期1/T f =,频率f 自己选择,采样频率4s f f =,观测时间0.5p T T =,T ,2T ,采样点数用p s T f 计算.图5.1 R(t>地波形及其幅度特性对3()cos8cos16cos 20x t t t t πππ=++,选择采用频率64s f Hz =,采样点数为16,32,64. 3. 分别对它们转换成序列,按顺序用123(),(),()x n x n x n 表示.4. 分别对它们进行FFT.如果采样点数不满足2地整数幂,可以通过序列尾部加0满足.5. 计算幅度特性并进行打印.五、实验过程原始记录<数据、图表、计算等)(一> 离散信号%14()()x n R n = n=0:1:10。
数字信号处理--实验五-用DFT(FFT)对信号进行频谱分析
学生实验报告开课学院及实验室:电子楼3172013年4月29日、实验目的学习DFT 的基本性质及对时域离散信号进行频谱分析的方法,进一步加深对频域概念和数字频率的理解,掌握 MATLAB 函数中FFT 函数的应用。
二、实验原理离散傅里叶变换(DFT)对有限长时域离散信号的频谱进行等间隔采样,频域函数被离散化了, 便于信号的计算机处理。
设x(n)是一个长度为 M 的有限长序列,x(n)的N 点傅立叶变换:X(k)N 1j 三 knDFT[x(n)]N x(n)e N0 k N 1n 0其中WNe.2 jN,它的反变换定义为:1X(n)NkN 1nkX(k)W N0 令z W N k,X(zz WN k则有:N 1x( n)Wj kn 0可以得到,X(k)X(Z)Z WN kZ W N*是Z 平面单位圆上幅角为2kN 的点,就是将单位圆进行N 等分以后第 K 个点。
所以, X(K)是Z 变换在单位圆上的等距采样,或者说是序列傅立叶变换的等距采样。
时域采样在满足Nyquist 定理时,就不会发生频谱混叠。
DFT 是对序列傅立叶变换的等距采样,因此可以用于序列的频谱分析。
如果用FFT 对模拟信号进行谱分析,首先要把模拟信号转换成数字信号,转换时要求知道模拟 信号的最高截至频率,以便选择满足采样定理的采样频率。
般选择采样频率是模拟信号中最高频率的3~4倍。
另外要选择对模拟信号的观测时间,如果采样频率和观测时间确定,则采样点数也确定 了。
这里观测时间和对模拟信号进行谱分析的分辨率有关,最小的观测时间和分辨率成倒数关系。
最小的采样点数用教材相关公式确定。
要求选择的采样点数和观测时间大于它的最小值。
如果要进行谱分析的模拟信号是周期信号,最好选择观测时间是信号周期的整数倍。
如果不知道■ 厂1*1IE向i1A I1f Ii i 0r 1 疋0Jfb-4W0 70000图5.1 R(t)的波形及其幅度特性xn=[on es(1,4),zeros(1,7)];%输入时域序列向量 xn=R4( n)%计算xn 的8点DFTXk16=fft(x n,16);%计算xn 的16点DFTXk32=fft(x n,32); %计算xn 的32点DFTk=0:7;wk=2*k/8;对 x 3(t) cos8 t cos16 t cos20 t ,选择采用频率 f s 64Hz ,采样点数为 16 , 32 , 64。
应用FFT对信号进行频谱分析
>> for i=1:4 x(i)=5-i; end >> for i=5:8 x(i)=i-4; end >> for i=9:16 x(i)=0; end >> close all;subplot(2,1,1);stem(x); >> subplot(2,1,2);stem(abs(fft(x,16)));
可以得到������ ������ = ������(������)|
������������ −������ ������ ������=������−������ ������ =������ ������
, ������−������ ������ 是 Z 平面单位圆上幅角为������ =
������的点, 就是将
二、实验原理与方法
一个连续信号 xa(t)的频谱可以用他的傅立叶变换表示为 +∞ ������������ (������������)= −∞ ������������ (������)������−������������������������������ 如果对该信号进行理想采样,可以得到采样序列: x(n)=Xa(nT) 同样可以对该序列进行 Z 变换,其中 T 为采样周期 ∞ X(z)= + x n z-n n=-∞ 当 Z=ej 的时候,我们就得到了序列的傅立叶变换 ω ∞ X(ej )= + x n ������−������������������ n=-∞
>> p=8;q=8;x=exp(-1*(n-p).^2/q); >> close all;subplot(3,1,1);stem(abs(fft(x))) >> p=13;q=8;x=exp(-1*(n-p).^2/q); >> subplot(3,1,2);stem(abs(fft(x))) >> p=14;q=8;x=exp(-1*(n-p).^2/q); >> subplot(3,1,3);stem(abs(fft(x)))
数字信号处理--实验五 用DFT(FFT)对信号进行频谱分析
subplot(2,2,4);stem(wk,abs(Xk16),'.'); %绘制16点DFT的幅频特性图
title('(d) 16点DFT的幅频特性图');
xlabel('\omega/\pi');
ylabel('幅度');
Xk3=fft(xn,32); %计算xn的32点DFT
k3=0:length(abs(Xk3))-1;wk3=2*k3/32; %产生32点DFT对应的采样点频率(关于π归一化值)
k=0:15;wk=2*k/16; %产生16点DFT对应的采样点频率(关于π归一化值)
subplot(2,2,3);stem(wk,abs(Xk16),'.'); %绘制16点DFT的幅频特性图
title('(c) 16点DFT的幅频特性图');xlabel('\omega/\pi');ylabel('幅度');
(3)对x3(n)进行频谱分析,并选择变换区间,画出幅频特性曲线。
(二)连续信号
1.实验信号:
选择 ,式中 的波形以Байду номын сангаас幅度特性如图7.1所示。
式中频率 自己选择。
2.分别对三种模拟信号选择采样频率和采样点数。
对 ,选择采样频率 ,8 ,16 ,采样点数用 . 计算。
对 ,周期 ,频率 自己选择,采样频率 ,观测时间 , , ,采样点数用 计算。
k=0:7;wk=2*k/8; %产生8点DFT对应的采样点频率(关于π归一化值)
subplot(3,1,1);stem(wk,abs(Xk8),'.'); %绘制8点DFT的幅频特性图
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字信号处理实验五
用FFT做频谱分析
实验目的:
(1)通过本实验,加深对DTFT和IDFT以及DFT和FFT的理解,熟悉FFT子程序
(2)熟悉应用FFT对典型信号进行频谱分析的方法
(3)了解应用FFT进行信号频谱分析过程中可能出现的问题,以便在实际中正确应用FFT
(4)熟悉应用FFT实现两个序列线性卷积的方法
(5)初步了解用周期图法做随机信号频谱分析的方法
实验内容:
(1)已知有限长序列x(n)=[1,0.5,0,0.5,1,1,0.5,0],要求:用FFT求该序列的DFT、IDFT的图形。
程序如下:
xn=[1,0.5,0,0.5,1,1,0.5,0];
n=length(xn);
k=0:n-1;
subplot(2,2,1);
stem(k,xn,'k.');
title('x(n)');
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(k,xn1);
title('x(n)=IDFT(Xk)');
波形如下:
假设采样频率Fs=20Hz,序列长度N分别取8、32和64,用FFT计算幅度谱和相位谱。
程序如下:
clear;close all
fs=20;
T=1/fs;
N=[8,32,64];
for m=1:3
x=[1,0.5,0,0.5,1,1,0.5,0];
x1=fft(x,N(m));
x2=ifft(x,N(m));
subplot(3,2,2*m-1);
stem([0:N(m)-1],abs(x1),'o');
title('幅度谱');
subplot(3,2,2*m);
stem([0:N(m)-1],abs(x2),'o');
title('相位谱');
end
波形如下:
(2)用FFT计算下面连续信号的频谱,并观察选择不同的采样周期Ts和序列长度N值对频谱特性的影响:
=-t
+
t
+
t
x e t
t
t
(sin
2.2
),
sin
1.2
2
sin
)(01.0≥
a
程序如下:
clear;close all
fs=4;T=1/fs;
Tp=4;N=Tp*fs;
N1=[N,4*N,8*N];
T1=[T,2*T,4*T];
for m=1:3
n=1:N1(m);
x1=exp(-0.01*T);
x2=sin(2*n*T)+sin(2.1*n*T)+sin(2.2*n*T);
x=x1*x2;
xk=fft(x,51)
fk=[0:50]/51/T
subplot(3,2,2*m-1);
stem(fk,abs(xk)/max(abs(xk)),'k.');
xlabel(T1(m));
ylabel(N1(m));
if m==1
title('序列长度')
end
end
for m=1:3
n=1:14;
x1=exp(-0.01*T1(m));
x2=sin(2*n*T1(m))+sin(2.1*n*T1(m))+sin(2.2*n*T1(m)); x=x1*x2;
xk=fft(x,51)
fk=[0:50]/51/T
subplot(3,2,2*m);
stem(fk,abs(xk)/max(abs(xk)),'k.');
xlabel(T1(m));
ylabel(N1(m));
if m==1
title('采样周期')
end
end
波形如下:
(注:可编辑下载,若有不当之处,请指正,谢谢!)。