实验三:用FFT对信号作频谱分析-实验分析报告

合集下载

数字信号实验三用FFT做谱分析实验报告

数字信号实验三用FFT做谱分析实验报告

南昌航空大学实验报告二○一六 年 五 月 二十一 日课程名称: 数字信号处理 实验名称:用FFT 做谱分析 班级:姓名: 同组人: 指导老师评定: 签名: 一、实验目的 (1)进一步加深DFT 算法原理和基本性质的理解(因为FFT 只是DFT 的一种快速算法,所以FFT 的运算结果必然满足DFT 的基本性质)。

(2)学习用FFT 对连续星号和时域离散信号进行谱分析误差及其原因,以便在实际中正确应用FFT二、实验内容(1)⎩⎨⎧≤≤= 050 1)(其他n n x 构造DFT 函数计算)(n x 的10点DFT ,20点的DFT 并画出图形。

(2)利用FFT 对下列信号逐个进行谱分析并画出图形nn x c nn x n R n x a 8sin )(4cos )(b )()(3241π、π、、===以上3个序列的FFT 变换区间N=8,16 (3)设一个序列中含有两种频率成分,05.2,221HZ f HZ f ==,采样频率取为)/ 2sin()/ 2sin()(,1021s s s f n f f n f n x HZ f ππ即+==要区分初这两种频率成份,必须满足400>N ,为什么?计算X(k)512),n c、取x(n)(0计算X(k)512,n 0以补零方式使其加长到b、将a中的x(n)X(k)n)的DFT 128)时,计算x(n a、取x(n)(0<≤<≤<≤(4)令)()()(3n x n x n x x +=用FFT 计算8点和16点离散傅立叶变换并画出图形,分析DFT 的线性。

令)()()(32n jx n x n x +=用FFT 计算8点和16点离散傅立叶变换并画出图形,分析DFT 的对称性。

三、实验代码及实验图:1.N1=10;N2=20;n1=0:N1-1;n2=0:N2-1;xn1=[ones(1,6),zeros(1,(N1-6))]; xn2=[ones(1,6),zeros(1,(N2-6))]; Xk10=dft(xn1,N1);Xk20=dft(xn2,N2);subplot(2,1,1)stem(n1,abs(Xk10),'.');ylabel('xn1的幅');xlabel('N=10'); subplot(2,1,2)stem(n2,abs(Xk20),'.');ylabel('xn1的幅');xlabel('N=20');2.N1=8;N2=16;n1=0:N1-1;n2=0:N2-1;x1=[1 1 1 1];Xk11=fft(x1,N1);subplot(3,2,1)stem(n1,abs(Xk11),'.'); ylabel('x1');xlabel('N=8'); Xk12=fft(x1,N2);subplot(3,2,2)stem(n2,abs(Xk12),'.'); ylabel('x1');xlabel('N=16');n=0:15;x2=cos((pi*n)/4);Xk21=fft(x2,N1);subplot(3,2,3)stem(n1,abs(Xk21),'.');ylabel('x2');xlabel('N=8'); Xk22=fft(x2,N2);subplot(3,2,4)stem(n2,abs(Xk22),'.'); ylabel('x2');xlabel('N=16');n=0:15;x3=sin((pi*n)/8);Xk31=fft(x3,N1);subplot(3,2,5)stem(n1,abs(Xk31),'.'); ylabel('x3');xlabel('N=8'); Xk32=fft(x3,N2);subplot(3,2,6)stem(n2,abs(Xk32),'.'); ylabel('x3');xlabel('N=16');3.f1=2;f2=2.05;fs=10;N1=128;n1=0:N1-1;xn1=sin(2*pi*f1*n1/fs)+sin(2*pi* f2*n1/fs);Xk1=dft(xn1,N1);subplot(3,1,1)stem(n1,abs(Xk1),'.');xlabel('N=128');N2=512;n2=0:N2-1;xn2=[xn1,zeros(1,(512-N1))];Xk2=dft(xn2,N2);subplot(3,1,2)stem(n2,abs(Xk2),'.');xlabel('在xn后补零');N3=512;n3=0:N3-1;xn3=sin(2*pi*f1*n3/fs)+sin(2*pi* f2*n3/fs);Xk3=dft(xn3,N3);subplot(3,1,3)stem(n3,abs(Xk3),'.');xlabel('N=512');4.n=0:15;x2=cos((pi*n)/4);x3=sin((pi*n)/8);xn=x2+x3;N1=8;N2=16;n1=0:N1-1;n2=0:N2-1; Xk8=fft(xn,N1);subplot(2,1,1)stem(n1,abs(Xk8),'.');ylabel('xn');xlabel('N=8'); Xk16=fft(xn,N2);subplot(2,1,2)stem(n2,abs(Xk16),'.'); ylabel('x1');xlabel('N=16');5.n=0:15;x2=cos((pi*n)/4);x3=sin((pi*n)/8);xn=x2+j*x3;N1=8;N2=16;n1=0:N1-1;n2=0:N2-1; Xk8=fft(xn,N1);subplot(2,1,1)stem(n1,abs(Xk8),'.'); xlabel('N=8');Xk16=fft(xn,N2);subplot(2,1,2)stem(n2,abs(Xk16),'.'); xlabel('N=16');四、实验总结1.通过此次实验加深DFT算法原理和基本性质的理解,掌握了离散时间信号的FFT变换的方法,明白其频谱是以抽样点数N为周期的周期延拓。

FFT算法分析信号的频谱

FFT算法分析信号的频谱

FFT算法分析信号的频谱一、实验目的(1)了解FFT的原理;(2)了解在DSP中FFT的设计及编程方法;(3)了解在DSP中RFFT的设计及编程方法;(4)熟悉对FFT的调试方法;二、实验原理对于有限长离散数字信号{x[n]},0≤x≤N-1,它的频谱离散数学值{X(K)}可由离散傅氏变换(DFT)求得。

FFT的基本思想在于:将原来的N点序列分成两个较短的序列,这些序列的DFT可以很简单地组合起来得到原序列的DFT。

FFT使DFT的运算大大简化,运算时间一般可以缩短一二个数量级。

TMS320c5402有专门的FFT指令,使得FFT算法在DSP芯片上实现的速度更快,更简单。

查库函数,使用rfft或cfft可快速实现FFT运算。

rfft函数原型为void rfft (DATA x, nx, short scale)其中DATA x为数据存放数组,nx为数组长度,运算完毕后DATA x中原先数据被冲掉,存进运算完FFT的数据。

cfft与rfft不同之处在于cfft可对复数进行FFT运算。

rifft和cifft分别为rfft和cfft进行逆运算。

三、 FFT的编程使用rfft和rifft函数,程序如下#include <math.h>#include <tms320.h>#include <dsplib.h>#include "test.h"void main(void){cbrev(x,x,NX/2);//倒置,使x满足FFT输入的格式要求rfft(x,NX,1);//FFT运算unpacki(x,NX);cbrev(x,x,NX/2);//倒置rifft(x,NX,1);//IFFT运算}在test.h中x[NX]存放sine函数的样点值初始x中的数值相应的频谱执行cbrev(x,x,NX/2);后执行FFT变换后,sin函数的频谱如下开始反变换,执行unpacki(x,NX);后执行cbrev(x,x,NX/2);后执行rifft(x,NX,1);进行FFT反变换后相应的频谱使用cfft和cifft函数,程序如下#include <math.h>#include <tms320.h>#include <dsplib.h>#include "test.h"short i;short eflagf= PASS;short eflagi= PASS;short scale = 1;short noscale = 0;short x1[2*NX];void main(void){cbrev(x,x,NX); //倒置,使x满足FFT输入的格式要求cfft(x,NX,scale);//FFT运算cbrev(x,x,NX);//倒置cifft(x,NX,noscale);//IFFT运算return;}在test.h中x[2*NX]存放样本函数的样点值初始数组中x存放的数据相应的频谱为执行cbrev(x,x,NX);后执行cfft(x,NX,scale);FFT的频谱执行cbrev(x,x,NX);后执行cifft(x,NX,noscale);后恢复的波形相应的频谱如果要对实际的采样信号进行分析,只须将采样数据存入x数组中在进行分析即可。

实验三用FFT对信号进行频谱分析和MATLAB程序

实验三用FFT对信号进行频谱分析和MATLAB程序

实验三用FFT对信号进行频谱分析和MATLAB程序实验三中使用FFT对信号进行频谱分析的目的是通过将时域信号转换为频域信号,来获取信号的频谱信息。

MATLAB提供了方便易用的函数来实现FFT。

首先,我们需要了解FFT的原理。

FFT(快速傅里叶变换)是一种快速计算离散傅里叶变换(DFT)的算法,用于将离散的时间域信号转换为连续的频域信号。

FFT算法的主要思想是将问题划分为多个规模较小的子问题,并利用DFT的对称性质进行递归计算。

FFT算法能够帮助我们高效地进行频谱分析。

下面是一个使用MATLAB进行频谱分析的示例程序:```matlab%生成一个10秒钟的正弦波信号,频率为1Hz,采样率为100Hzfs = 100; % 采样率t = 0:1/fs:10-1/fs; % 时间范围f=1;%正弦波频率x = sin(2*pi*f*t);%进行FFT计算N = length(x); % 信号长度X = fft(x); % FFT计算magX = abs(X)/N; % 幅值谱frequencies = (0:N-1)*(fs/N); % 频率范围%绘制频谱图figure;plot(frequencies, magX);xlabel('频率(Hz)');ylabel('振幅');title('信号频谱');```上述代码生成了一个10秒钟的正弦波信号,频率为1 Hz,采样率为100 Hz。

通过调用MATLAB的fft函数计算信号的FFT,然后计算每个频率分量的幅值谱,并绘制出信号频谱图。

在频谱图中,横轴表示频率,纵轴表示振幅。

该实验需要注意以下几点:1.信号的采样率要与信号中最高频率成一定比例,以避免采样率不足导致的伪频谱。

2.FFT计算结果是一个复数数组,我们一般只关注其幅值谱。

3.频率范围是0到采样率之间的频率。

实验三的报告可以包含以下内容:1.实验目的和背景介绍。

实验三:用FFT对信号作频谱分析_实验报告

实验三:用FFT对信号作频谱分析_实验报告

实验三:用FFT对信号作频谱分析_实验报告实验三:用FFT对信号作频谱分析实验报告一、实验目的与要求学习用FFT对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便正确应用FFT。

二、实验原理用FFT对信号作频分析是学习数字信号处理的重要内容,经常需要进行分析的信号是模拟信号的时域离散信号。

对信号进行谱分析的重要问题是频谱分辨率D和分析误差。

频谱分辨率直接和FFT的变换区间N有关,因为FFT能够实现的频率分辨率是2π/N,因此要求2π/N小于等于D。

可以根据此式选择FFT的变换区间N。

误差主要来自于用FFT作频谱分析时,得到的是离散谱,而信号(周期信号除外)是连续谱,只有当N较大时,离散谱的包络才能逼近连续谱,因此N要适当选择大一些。

三、实验步骤及内容(含结果分析)(1)对以下序列进行FFT分析:x(n)=R(n) 14n+1 0?n?38-n 4?n?7 x(n)= 20 其它n4-n 0?n?3n-3 4?n?7 x(n)= 30 其它n选择FFT的变换区间N为8和16两种情况进行频谱分析,分别打印出幅频特性曲线,并进行讨论、分析与比较。

【实验结果如下】:- 1 -实验结果图形与理论分析相符。

(2)对以下周期序列进行谱分析:x(n)=cos[(π/4)*n] 4- 2 -x(n)= cos[(π/4)*n]+ cos[(π/8)*n] 5选择FFT的变换区间N为8和16两种情况进行频谱分析,分别打印出幅频特性曲线,并进行讨论、分析与比较。

【实验结果如下】:(3)对模拟周期信号进行频谱分析:x(n)= cos(8πt)+ cos(16πt)+ cos(20πt) 6选择采样频率Fs=64Hz,FFT的变换区间N为16、32、64三种情况进行频谱分析,分别打印出幅频特性曲线,并进行讨论、分析与比较。

【实验结果如下】:- 3 -四、【附录】(实验中代码)x1n=[ones(1,4)]; %产生R4(n)序列向量X1k8=fft(x1n,8); %计算x1n的8点DFTX1k16=fft(x1n,16); %计算x1n的16点DFT%以下绘制幅频特性曲线N=8;f=2/N*(0:N-1);figure(1);subplot(1,2,1);stem(f,abs(X1k8),'.'); %绘制8点DFT的幅频特性图title('(1a) 8点DFT[x_1(n)]');xlabel('ω/π');ylabel('幅度'); N=16;f=2/N*(0:N-1);subplot(1,2,2);stem(f,abs(X1k16),'.'); %绘制8点DFT的幅频特性图title('(1a) 16点DFT[x_1(n)]');xlabel('ω/π');ylabel('幅度'); %x2n 和x3nM=8;xa=1:(M/2); xb=(M/2):-1:1; x2n=[xa,xb]; %产生长度为8的三角波序列x2(n) x3n=[xb,xa];X2k8=fft(x2n,8);X2k16=fft(x2n,16);X3k8=fft(x3n,8);X3k16=fft(x3n,16);figure(2);N=8;f=2/N*(0:N-1);- 4 -subplot(2,2,1);stem(f,abs(X2k8),'.'); %绘制8点DFT的幅频特性图title('(2a) 8点DFT[x_2(n)]');xlabel('ω/π');ylabel('幅度');subplot(2,2,3);stem(f,abs(X3k8),'.'); %绘制8点DFT的幅频特性图π');ylabel('幅度'); title('(3a) 8点DFT[x_3(n)]');xlabel('ω/N=16;f=2/N*(0:N-1);subplot(2,2,2);stem(f,abs(X2k16),'.'); %绘制8点DFT的幅频特性图title('(2a) 16点DFT[x_2(n)]');xlabel('ω/π');ylabel('幅度'); subplot(2,2,4);stem(f,abs(X3k16),'.'); %绘制8点DFT的幅频特性图title('(3a) 16点DFT[x_3(n)]');xlabel('ω/π');ylabel('幅度'); %x4n 和x5nN=8;n=0:N-1;x4n=cos(pi*n/4);x5n=cos(pi*n/4)+cos(pi*n/8); X4k8=fft(x4n,8);X4k16=fft(x4n,16);X5k8=fft(x5n,8);X5k16=fft(x5n,16);figure(3);N=8;f=2/N*(0:N-1);subplot(2,2,1);stem(f,abs(X4k8),'.'); %绘制8点DFT的幅频特性图title('(4a) 8点DFT[x_4(n)]');xlabel('ω/π');ylabel('幅度'); subplot(2,2,3);stem(f,abs(X5k8),'.'); %绘制8点DFT的幅频特性图title('(5a) 8点DFT[x_5(n)]');xlabel('ω/π');ylabel('幅度'); N=16;f=2/N*(0:N-1);subplot(2,2,2);stem(f,abs(X4k16),'.'); %绘制8点DFT的幅频特性图title('(4a) 16点DFT[x_4(n)]');xlabel('ω/π');ylabel('幅度'); subplot(2,2,4);stem(f,abs(X5k16),'.'); %绘制8点DFT的幅频特性图title('(5a) 16点DFT[x_5(n)]');xlabel('ω/π');ylabel('幅度');%x8nFs=64; T=1/Fs;N=16;n=0:N-1; %对于N=16的情况nT = n*T;x8n=cos(8*pi*nT)+cos(16*pi*nT)+cos(20*pi*nT)X8k16=fft(x8n,16);N=16;f=2/N*(0:N-1);figure(4);subplot(2,2,1);stem(f,abs(X8k16),'.'); %绘制8点DFT的幅频特性图title('(8a) 16点DFT[x_8(n)]');xlabel('ω/π');ylabel('幅度');N=32;n=0:N-1; %对于N=16的情况nT = n*T;x8n=cos(8*pi*nT)+cos(16*pi*nT)+cos(20*pi*nT)X8k32=fft(x8n,32);- 5 -N=32;f=2/N*(0:N-1);subplot(2,2,2);stem(f,abs(X8k32),'.'); %绘制8点DFT的幅频特性图π');ylabel('幅度'); title('(8a) 32点DFT[x_8(n)]');xlabel('ω/N=64;n=0:N-1; %对于N=16的情况nT = n*T;x8n=cos(8*pi*nT)+cos(16*pi*nT)+cos(20*pi*nT)X8k64=fft(x8n,64);N=64;f=2/N*(0:N-1);subplot(2,2,3);stem(f,abs(X8k64),'.'); %绘制8点DFT的幅频特性图title('(8a) 64点DFT[x_8(n)]');xlabel('ω/π');ylabel('幅度'); 五、思考题及实验体会通过实验,我知道了用FFT对信号作频谱分析是学习数字信号处理的重要内容。

FFT分析信号频谱

FFT分析信号频谱
5
三、实验仪器、仪表及原理图: 实验仪器、仪表及原理图
信号源一台,双踪示波器一台 稳压电源 信号源一台 双踪示波器一台,稳压电源 双踪示波器一台 一台,实验板一块 实验板一块。 一台 实验板一块。
Out2 Gnd
信号源
Input1 Gnd
实验板
示波器
图4 - 2
6

四、实验内容及步骤: 实验内容及步骤
4
二、实验原理: 实验原理:
本实验采用DSP,通过编制FFT的汇编程序, DSP,通过编制FFT的汇编程序 1 、本实验采用DSP,通过编制FFT的汇编程序, 实现信号的频谱分析;实验原理图如图4 所示: 实现信号的频谱分析;实验原理图如图4-1所示:
输入信号 前置滤波器 A/D DSP D/A 输出频谱
EPLD 图4 - 1
图中使用的DSP芯片为TMS320F2812,A/D 图中使用的DSP芯片为TMS320F2812,A/D DSP芯片为 芯片为12 ,D/A芯片为AD768(16位 ,EPLD为可 12位 芯片为AD768(16 芯片为12位,D/A芯片为AD768(16位),EPLD为可 编程逻辑器,用于产生逻辑控制信号。 编程逻辑器,用于产生逻辑控制信号。
实验四
FFT分析信号频谱 分析信号频谱
FFT是快速傅里叶变换的简称,是为减少DFT FFT是快速傅里叶变换的简称,是为减少DFT 是快速傅里叶变换的简称 计算次数的一种快速有效的算法。 DFT则是将一 计算次数的一种快速有效的算法。而DFT则是将一 组以时间为自变量的“信号” 组以时间为自变量的“信号”变换为一组以频率 自变量的“频谱”函数。 为自变量的“频谱”函数。 傅里叶变换理论可知,若信号为有限长, 由傅里叶变换理论可知,若信号为有限长,则 其频谱无限宽;若信号的频谱为有限宽, 其频谱无限宽;若信号的频谱为有限宽,则其持续 时间无限长。为了能满足DFT的变换条件, DFT的变换条件 时间无限长。为了能满足DFT的变换条件,对频谱 很宽的信号, 很宽的信号,可用前置滤波器滤除滤除幅度较小的 高频分量;对持续时间很长的信号, 高频分量;对持续时间很长的信号,取样点数太多 无法存储和运算,只能截取有限列长进行DFT DFT。 无法存储和运算,只能截取有限列长进行DFT。因 此对信号进行DFT处理将可能产生下列现象: DFT处理将可能产生下列现象 此对信号进行DFT处理将可能产生下列现象:混叠 现象、栅栏效应、频谱泄漏。 现象、栅栏效应、频谱泄漏。

数字信号处理上机实验答案(第三版,第十章)[自己整理完善的]

数字信号处理上机实验答案(第三版,第十章)[自己整理完善的]

第十章 上机实验数字信号处理是一门理论和实际密切结合的课程,为深入掌握课程内容,最好在学习理论的同时,做习题和上机实验。

上机实验不仅可以帮助读者深入的理解和消化基本理论,而且能锻炼初学者的独立解决问题的能力。

本章在第二版的基础上编写了六个实验,前五个实验属基础理论实验,第六个属应用综合实验。

实验一 系统响应及系统稳定性。

实验二 时域采样与频域采样。

实验三 用FFT 对信号作频谱分析。

实验四 IIR 数字滤波器设计及软件实现。

实验五 FIR 数字滤波器设计与软件实现实验六 应用实验——数字信号处理在双音多频拨号系统中的应用任课教师根据教学进度,安排学生上机进行实验。

建议自学的读者在学习完第一章后作实验一;在学习完第三、四章后作实验二和实验三;实验四IIR 数字滤波器设计及软件实现在。

学习完第六章进行;实验五在学习完第七章后进行。

实验六综合实验在学习完第七章或者再后些进行;实验六为综合实验,在学习完本课程后再进行。

10.1 实验一: 系统响应及系统稳定性1.实验目的(1)掌握 求系统响应的方法。

(2)掌握时域离散系统的时域特性。

(3)分析、观察及检验系统的稳定性。

2.实验原理与方法在时域中,描写系统特性的方法是差分方程和单位脉冲响应,在频域可以用系统函数描述系统特性。

已知输入信号可以由差分方程、单位脉冲响应或系统函数求出系统对于该输入信号的响应,本实验仅在时域求解。

在计算机上适合用递推法求差分方程的解,最简单的方法是采用MA TLAB 语言的工具箱函数filter 函数。

也可以用MATLAB 语言的工具箱函数conv 函数计算输入信号和系统的单位脉冲响应的线性卷积,求出系统的响应。

系统的时域特性指的是系统的线性时不变性质、因果性和稳定性。

重点分析实验系统的稳定性,包括观察系统的暂态响应和稳定响应。

系统的稳定性是指对任意有界的输入信号,系统都能得到有界的系统响应。

或者系统的单位脉冲响应满足绝对可和的条件。

利用FFT对信号进行频谱分析

利用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泄漏不能与混叠完全分开,因为泄漏导致频谱的扩展,从而造成混叠。

用DFT(FFT)对时域离散信号进行频谱分析

用DFT(FFT)对时域离散信号进行频谱分析

一、实验目的1. 进一步加深DFT 算法原理和基本性质的理解(因为FFT 只是DFT 的一种快速算法, 所以FFT 的运算结果必然满足DFT 的基本性质)。

2.掌握DFT (FFT )对时域离散信号进行频谱分析的方法。

二、实验原理 1、DFT 和FFT 原理:长度为N 的序列x(n)的离散傅立叶变换为X(k):∑-=-==101,....,0,)()(N n nk N N k W n x k X首先按n 的奇偶把时间序列x(n)分解为两个长为N/2点的序列x n x r 12()()=r=0,1,...,N/2-1x n x r 221()()=+r=0,1,...,N/2-1则x(n)的DFT 为X(k)X k x n W x r W x r W x r Wx r W W n N N knr N N krr N N kr r N Nkr r N Nkr Nk()()()()()()//()//==++=+=-=-=-+=-=-∑∑∑∑∑01212021210211202122221由于W e e W N kr j N Kr j N krN kr 222222===--ππ//,故有X k x r W W x r W X k W X k k N r N N kr N k r N N krN k()()()()(),,...,/////=+=+=-=-=-∑∑0211202122120121其中X 1(k) 和X 2(k)分别为x 1(n) 和x 2(n)的N/2点DFT 。

因为X 1(k) 和X 2(k)均是以N/2为周期的,且W W N k N Nk+=-/2。

因此可将N 点DFT X(k)分解为下面的形式X k X k W X k N k()()()=+12 k=0,1,...,N/2-1X k NX k W X k N k ()()()+=-212k=0,1,...,N/2-1通过上面的推导可以看出,N 点的DFT可以分解为两个N/2点的DFT ,每个N/2点的DFT 又可以分解为两个N/4点的DFT 。

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

实验三:用FFT对信号作频谱分析-实验报告————————————————————————————————作者:————————————————————————————————日期:实验三:用FFT 对信号作频谱分析实验报告一、 实验目的与要求学习用FFT 对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便正确应用FFT 。

二、 实验原理用FFT 对信号作频分析是学习数字信号处理的重要内容,经常需要进行分析的信号是模拟信号的时域离散信号。

对信号进行谱分析的重要问题是频谱分辨率D 和分析误差。

频谱分辨率直接和FFT 的变换区间N 有关,因为FFT 能够实现的频率分辨率是2π/N ,因此要求2π/N 小于等于D 。

可以根据此式选择FFT 的变换区间N 。

误差主要来自于用FFT 作频谱分析时,得到的是离散谱,而信号(周期信号除外)是连续谱,只有当N 较大时,离散谱的包络才能逼近连续谱,因此N 要适当选择大一些。

三、 实验步骤及内容(含结果分析)(1)对以下序列进行FFT 分析:x 1(n)=R 4(n)x 2(n)=x 3(n)=选择FFT 的变换区间N 为8和16两种情况进行频谱分析,分别打印出幅频特性曲线,并进行讨论、分析与比较。

【实验结果如下】:n+1 0≤n ≤38-n 4≤n ≤70 其它n 4-n 0≤n ≤3n-3 4≤n ≤70 其它n实验结果图形与理论分析相符。

(2)对以下周期序列进行谱分析:x4(n)=cos[(π/4)*n]x5(n)= cos[(π/4)*n]+ cos[(π/8)*n]选择FFT的变换区间N为8和16两种情况进行频谱分析,分别打印出幅频特性曲线,并进行讨论、分析与比较。

【实验结果如下】:(3)对模拟周期信号进行频谱分析:x6(n)= cos(8πt)+ cos(16πt)+ cos(20πt)选择采样频率Fs=64Hz,FFT的变换区间N为16、32、64三种情况进行频谱分析,分别打印出幅频特性曲线,并进行讨论、分析与比较。

【实验结果如下】:四、【附录】(实验中代码)x1n=[ones(1,4)]; %产生R4(n)序列向量X1k8=fft(x1n,8); %计算x1n的8点DFTX1k16=fft(x1n,16); %计算x1n的16点DFT%以下绘制幅频特性曲线N=8;f=2/N*(0:N-1);figure(1);subplot(1,2,1);stem(f,abs(X1k8),'.'); %绘制8点DFT的幅频特性图title('(1a) 8点DFT[x_1(n)]');xlabel('ω/π');ylabel('幅度'); N=16;f=2/N*(0:N-1);subplot(1,2,2);stem(f,abs(X1k16),'.'); %绘制8点DFT的幅频特性图title('(1a) 16点DFT[x_1(n)]');xlabel('ω/π');ylabel('幅度'); %x2n 和 x3nM=8;xa=1:(M/2); xb=(M/2):-1:1;x2n=[xa,xb]; %产生长度为8的三角波序列x2(n)x3n=[xb,xa];X2k8=fft(x2n,8);X2k16=fft(x2n,16);X3k8=fft(x3n,8);X3k16=fft(x3n,16);figure(2);N=8;f=2/N*(0:N-1);subplot(2,2,1);stem(f,abs(X2k8),'.'); %绘制8点DFT的幅频特性图title('(2a) 8点DFT[x_2(n)]');xlabel('ω/π');ylabel('幅度'); subplot(2,2,3);stem(f,abs(X3k8),'.'); %绘制8点DFT的幅频特性图title('(3a) 8点DFT[x_3(n)]');xlabel('ω/π');ylabel('幅度'); N=16;f=2/N*(0:N-1);subplot(2,2,2);stem(f,abs(X2k16),'.'); %绘制8点DFT的幅频特性图title('(2a) 16点DFT[x_2(n)]');xlabel('ω/π');ylabel('幅度'); subplot(2,2,4);stem(f,abs(X3k16),'.'); %绘制8点DFT的幅频特性图title('(3a) 16点DFT[x_3(n)]');xlabel('ω/π');ylabel('幅度'); %x4n 和 x5nN=8;n=0:N-1;x4n=cos(pi*n/4);x5n=cos(pi*n/4)+cos(pi*n/8);X4k8=fft(x4n,8);X4k16=fft(x4n,16);X5k8=fft(x5n,8);X5k16=fft(x5n,16);figure(3);N=8;f=2/N*(0:N-1);subplot(2,2,1);stem(f,abs(X4k8),'.'); %绘制8点DFT的幅频特性图title('(4a) 8点DFT[x_4(n)]');xlabel('ω/π');ylabel('幅度'); subplot(2,2,3);stem(f,abs(X5k8),'.'); %绘制8点DFT的幅频特性图title('(5a) 8点DFT[x_5(n)]');xlabel('ω/π');ylabel('幅度'); N=16;f=2/N*(0:N-1);subplot(2,2,2);stem(f,abs(X4k16),'.'); %绘制8点DFT的幅频特性图title('(4a) 16点DFT[x_4(n)]');xlabel('ω/π');ylabel('幅度'); subplot(2,2,4);stem(f,abs(X5k16),'.'); %绘制8点DFT的幅频特性图title('(5a) 16点DFT[x_5(n)]');xlabel('ω/π');ylabel('幅度');%x8nFs=64; T=1/Fs;N=16;n=0:N-1; %对于N=16的情况nT = n*T;x8n=cos(8*pi*nT)+cos(16*pi*nT)+cos(20*pi*nT)X8k16=fft(x8n,16);N=16;f=2/N*(0:N-1);figure(4);subplot(2,2,1);stem(f,abs(X8k16),'.'); %绘制8点DFT的幅频特性图title('(8a) 16点DFT[x_8(n)]');xlabel('ω/π');ylabel('幅度'); N=32;n=0:N-1; %对于N=16的情况nT = n*T;x8n=cos(8*pi*nT)+cos(16*pi*nT)+cos(20*pi*nT)X8k32=fft(x8n,32);N=32;f=2/N*(0:N-1);subplot(2,2,2);stem(f,abs(X8k32),'.'); %绘制8点DFT的幅频特性图title('(8a) 32点DFT[x_8(n)]');xlabel('ω/π');ylabel('幅度');N=64;n=0:N-1; %对于N=16的情况nT = n*T;x8n=cos(8*pi*nT)+cos(16*pi*nT)+cos(20*pi*nT)X8k64=fft(x8n,64);N=64;f=2/N*(0:N-1);subplot(2,2,3);stem(f,abs(X8k64),'.'); %绘制8点DFT的幅频特性图title('(8a) 64点DFT[x_8(n)]');xlabel('ω/π');ylabel('幅度');五、思考题及实验体会通过实验,我知道了用FFT对信号作频谱分析是学习数字信号处理的重要内容。

经常需要进行谱分析的信号是模拟信号和时域离散信号。

对信号进行谱分析的重要问题是频谱分辨率D和分析误差。

频谱分辨率直接和FFT的变换区间N有关,因为FFT能够实现的频率分辨率是2л/N≤D。

可以根据此式选择FFT的变换区间N。

误差主要来自于用FFT作频谱分析时,得到的是离散谱,而信号(周期信号除外)是连续谱,只有当N较大时,离散谱的包络才能逼近于连续谱,因此N要适当选择大一些。

周期信号的频谱是离散谱,只有用整数倍周期的长度作FFT,得到的离散谱才能代表周期信号的频谱。

如果不知道信号周期,可以尽量选择信号的观察时间长一些。

对模拟信号进行频谱分析时,首先要按照采样定理将其变成时域离散信号。

如果是模拟周期信号,也应该选取整数倍周期的长度,经过采样后形成周期序列,按照周期序列的普分析进行。

相关文档
最新文档