当前位置:文档之家› 实验二 离散傅里叶变换(DFT)实验

实验二 离散傅里叶变换(DFT)实验

实验二 离散傅里叶变换(DFT)实验
实验二 离散傅里叶变换(DFT)实验

实验二 离散傅里叶变换(DFT )实验

【实验目的】

1.进一步熟悉CCS 集成开发环境的软硬件调试方法

2.学习DFT 的基本原理

3.掌握如何在DSP 中实现DFT 算法

【实验内容】

1. 了解DFT 的基本原理。

2.了解命令文件中伪指令MEMORY 和SECTIONS 的作用。

2. CCS 中的软硬件开发环境的熟悉。

3. 常用信号(包括正弦波,方波,三角波,锯齿波)的DFT 。

【实验器材】

1.DSP 开发板

2.DSP 仿真器

3 .PC 机(软件:CCS ,全称:Code composer studio )

三 实验原理

。傅里叶变换是一种将信号从时域变换到频域的变换形式,是信号处理的重要分析工具。离散傅里叶变换(DFT )是傅里叶变换在离散系统中的表示形式。

本实验是在学生首先产生一信号后,对该信号进行DFT ,并在CCS 中利用其自带的观察窗口或Memory 菜单来查看变换前后的波形或频谱值,从而完成了一个简易频谱分析仪。让学生更加直观形象地体会DFT 的整个过程

假设信号为x (0),x(1),……,x (N),那么其离散傅立叶变换后的实部和虚部以及频谱幅度分别为:

2()0

()()()()

N j k n N r i n X k x n e

X k jX k π-===+∑ 0

(0)()

(0)0N r i i X x i X =∴==∑ 0

02 ()()cos(())2()()sin(())(0)

N

r n N i i X k x n k n N X k x n k n k N ππ===???=-???>∑∑

()A k =

具体的实现过程的时候需要根据硬件的特性来实现。比如cos和sin的值都可事先通过软件计算出结果,保存在两个数组中,直接对其进行查表操作。

若缓存数量为128,即N=128。对于cos和sin的系数,根据需要可以首先计算出128点的sin值,而cos的值则可以通过sin表整体后移N/4点,也就是整体后移32点后得到。换句话说,加入sin的表为sin(0)、sin(1)、

sin(2)、……、sin(127),则cos的表就为sin(32)、sin(33)、sin(34)、……、sin(127)、sin(0)、sin(1)、……、sin(31),这样就相当于在DSP中节省了128B 的存储空间供其它程序使用。

四实验步骤

1.打开CCS软件直接打开lab2里的工程

2.修改hello工程下的源文件代码(产生一信号,并做DFT)。

3.对代码修改完毕后,编译代码。

4.编译通过后,下载代码到DSP。

5.首先点击CCS软件中的菜单View\Graph\Time/Frequency…,会弹出一个设置

图选择CCS图形观察窗口

对话框,对下图所相应的设置后,点击【OK】即可。

图设置图形观察窗口的属性

6.打开工程下面的源文件,在程序尾部位置设置断点。7.全部设置好后,点击CCS软件左侧全速运行按钮,即。8.待程序运行后,观察CCS的图形观察窗口显示的波形。

图4.9.4 断点设置位置

图4.9.5 三角波及其频谱

图4.9.6 正弦波及其频谱

图4.9.6 方波及其频谱

图4.9.6 锯齿波及其频谱【实验要求】

1.学会使用CCS仿真调试出正弦或余弦波的波形及其对应的频谱图

原始程序如下:

/*

* Copyright 2002 by Texas Instruments Incorporated.

* All rights reserved. Property of Texas Instruments Incorporated.

* Restricted rights to use, duplicate or disclose this code are

* granted through contract.

*

*/

/* "@(#) DSP/BIOS 4.80.208 12-06-02 (barracuda-l19)" */

/******************************************************************** *******/

/* */

/* H E L L O . C */

/* */

/* Basic LOG event operation from main. */

/* */

/******************************************************************** *******/

#include

#include

#include

#include

#include

#include

#include "hello.h"

float in_data[Length],out_data[Length];

//==== main =====

Void main()

{

int i,k;

puts("hello world!");

for(i=0;i

{

in_data[i]=cos(pi*i/16); //生成一个N个样点的余弦函数}

// Triangle_wave();

// Square_wave();

// Sawtooth_wave();

for( k=0;k

{

float real=0;

float image=0;

for(i=0;i

{

real+=in_data[i]*cos(2*pi*k*i/Length);

image+=in_data[i]*sin(2*pi*k*i/Length);

}

out_data[k]=sqrt(real*real+image*image);

}

return;

}

利用这个程序进行编译,仿真可以得到如下波形图和频谱图:

2.编程实现三角波,方波或锯齿波三者中的任意一种波形,并进行DFT变换,观察其波形和频谱图:

【思考题】

1. 相位如何计算。

2. 工程是否一定需要命令文件?

快速傅里叶变换实验报告

快速傅里叶变换实验报告

————————————————————————————————作者:————————————————————————————————日期: ?

快速傅里叶变换实验报告 机械34班 刘攀 2013010558 一、 基本信号(函数)的FF T变换 1. 000()sin()sin 2cos36x t t t t π ωωω=+++ 1) 采样频率08s f f =,截断长度N =16; 取02ωπ=rad/s,则0f =1Hz ,s f =8Hz ,频率分辨率 f ?=s f f N ?= =0.5Hz 。 最高频率c f =30f =3Hz ,s f >2c f ,故满足采样定理,不会发生混叠现象。 截断长度02T T =,整周期截取,不会发生栅栏效应。理论上有一定的泄漏,但在整周期 截取的情况下,旁瓣上的采样都约为 0,泄漏现象没有体现出来。 频谱图如下:

幅值误差0A ?=,相位误差0??=。 2) 采样频率08s f f =,截断长度N=32; 取02ωπ=rad/s ,则0f =1Hz,s f =8Hz ,频率分辨率f ?=s f f N ?==0.25Hz 。 最高频率c f =30f =3H z,s f >2c f ,故满足采样定理,不会发生混叠现象。 截断长度04T T =,整周期截取,不会发生栅栏效应。理论上有一定的泄漏,但在整周期 截取的情况下,旁瓣上的采样都约为 0,泄漏现象没有体现出来。 频谱图如下:

幅值误差0A ?=,相位误差0??=。 2. 00()sin()sin116x t t t π ωω=++ 1) 采样频率08s f f =,截断长度N=16; 取02ωπ=ra d/s,则0f =1Hz ,s f =8Hz,频率分辨率f ?=s f f N ?==0.5H z。 最高频率c f =110f =11H z,s f <2c f ,故不满足采样定理,会发生混叠现象。 截断长度02T T =,整周期截取,不会发生栅栏效应。理论上有一定的泄漏,但在整周期 截取的情况下,旁瓣上的采样都约为 0,泄漏现象没有体现出来。 频谱图:

实验三傅里叶变换及其性质

1 / 7 信息工程学院实验报告 课程名称:信号与系统 实验项目名称:实验 3 傅里叶变换及其性质实验时间: 2013-11-29 班级: 姓名:学号: 一、实验目的: 1、学会运用MATLAB 求连续时间信号的傅里叶(Fourier )变换; 2、学会运用MATLAB 求连续时间信号的频谱图; 3、学会运用MATLAB 分析连续时间信号的傅里叶变换的性质。 二、实验环境: 1、硬件:在windows 7 操作环境下; 2、软件:Matlab 版本7.1 三、实验原理: 3.1傅里叶变换的实现 信号()f t 的傅里叶变换定义为:() [()] ()j t F F f t f t e dt , 傅里叶反变换定义为: 1 1()[()] ()2 j t f t F F f e d 。 信号的傅里叶变换主要包括MATLAB 符号运算和MATLAB 数值分析两种方法,下面分别加以探讨。同时, 学习连续时间信号的频谱图。 3.1.1 MATLAB 符号运算求解法 MATLAB 符号数学工具箱提供了直接求解傅里叶变换与傅里叶反变换的函数fourier( )和ifourier( )。 Fourier 变换的语句格式分为三种。 (1)F=fourier(f):它是符号函数 f 的Fourier 变换,默认返回是关于的函数。 (2)F=fourier(f,v) :它返回函数F 是关于符号对象 v 的函数,而不是默认的 ,即 ()()j v t Fv fte d t 。 (3)F=fourier(f,u,v):是对关于u 的函数f 进行变换,返回函数F 是关于v 的函数,即 ()()jvu F v f t e du 。 傅里叶反变换的语句格式也分为三种。(1)f=ifourier(F):它是符号函数F 的Fourier 反变换,独立变量默认为 ,默认返回是关于 x 的函数。 (2)f=ifourier(F,u):它返回函数 f 是u 的函数,而不是默认的 x 。 (3)f=ifourier(F,u,v) :是对关于v 的函数F 进行反变换,返回关于 u 的函数f 。 成 绩: 指导教师(签名):

实验四-离散傅里叶变换

实验四:离散傅里叶变换 实验原理: DFT的快速算法FFT利用了的三个固有特性:(1)对称性(2)周期性(3)可约性。FFT算法基本上可以分为两大类,即按时间抽选法(DIT,Decimation-In-Time)和按频率抽选法(DIF,Decimation-In-frequency)。 MATLAB中提供了进行快速傅里叶变换的fft函数: X=fft(x),基2时间抽取FFT算法,x是表示离散信号的向量;X是系数向量; X=fft(x,N),补零或截断的N点DFT,当x得长度小于N时,对补零使其长度为N,当x的长度大于N时,对x截断使其长度为N。 实验内容: =60; n=[0:1:k/2]; xa1=2*sin(10*pi*n/k)+cos(18*pi*n/k); subplot(321) stem(n,xa1) xlabel('N');ylabel('x(n)'); xk1=fft(xa1);xk1=abs(xk1) subplot(322) stem(n,xk1) xlabel('k');ylabel('X(k)'); n=[0:1:k*]; xa1=2*sin(10*pi*n/k)+cos(18*pi*n/k); subplot(323) stem(n,xa1) xlabel('N');ylabel('x(n)'); xk1=fft(xa1);xk1=abs(xk1) subplot(324) stem(n,xk1) xlabel('k');ylabel('X(k)'); n=[0:1:k*2]; xa1=2*sin(10*pi*n/k)+cos(18*pi*n/k); subplot(325) stem(n,xa1) xlabel('N');ylabel('x(n)'); xk1=fft(xa1);xk1=abs(xk1) subplot(326) stem(n,xk1) xlabel('k');ylabel('X(k)');

离散信号的傅里叶变换(MATLAB实验)

离散信号的变换(MATLAB 实验) 一、实验目的 掌握用Z 变换判断离散系统的稳定与否的方法,掌握离散傅立叶变换及其基本性质和特点,了解快速傅立叶变换。 二、实验内容 1、已经系统函数为 5147.13418.217.098.2250 5)(2342-++--+=z z z z z z Z H (1) 画出零极点分布图,判断系统是否稳定; (2)检查系统是否稳定; (3) 如果系统稳定,求出系统对于u(n)的稳态输出和稳定时间b=[0,0,1,5,-50];a=[2,-2.98,0.17,2.3418,-1.5147]; subplot(2,1,1);zplane(b,a);title('零极点分布图'); z=roots(a); magz=abs(z) magz = 0.9000 0.9220 0.9220 0.9900 n=[0:1000]; x=stepseq(0,0,1000); s=filter(b,a,x); subplot(2,1,2);stem(n,s);title('稳态输出'); (1)因为极点都在单位园内,所以系统是稳定的。 (2)因为根的幅值(magz )都小于1,所以这个系统是稳定的。 (3)稳定时间为570。 2、综合运用上述命令,完成下列任务。 (1) 已知)(n x 是一个6点序列: ???≤≤=其它,050,1)(n n x

计算该序列的离散时间傅立叶变换,并绘出它们的幅度和相位。 要求:离散时间傅立叶变换在[-2π,2π]之间的两个周期内取401个等分频率上进行数值求值。 n=0:5;x=ones(1,6); k=-200:200;w=(pi/100)*k; X=x*(exp(-j*pi/100)).^(n'*k); magX=abs(X);angX=angle(X); subplot(2,1,1);plot(w/pi,magX);grid;title('幅度'); subplot(2,1,2);plot(w/pi,angX);grid;title('相位'); (2) 已知下列序列: a. ,1000),52.0cos()48.0cos()(≤≤+=n n n n x ππ; b .)4sin()(πn n x =是一个N =32的有限序列; 试绘制)(n x 及它的离散傅立叶变换 )(k X 的图像。 a . n=[0:1:100];x=cos(0.48*pi*n)+cos(0.52*pi*n); subplot(2,1,1);plot(n,x);title('x(n)的图像'); X=dft(x,101); magX=abs(X); subplot(2,1,2);plot(n,magX);title('丨X(k)丨的图像');

离散傅里叶变换和快速傅里叶变换

戶幵,戈丿、弟实验报告 课程名称:彳 _____________ 指导老师 _____________ 成绩: ____________________ 实验名称:离散傅里叶变换和快速傅里叶变换 实验类型: _________________ 同组学生姓名: 一、实验目的和要求(必填) 二、实验内容和原理(必填) 三、主要仪器设备(必填) 四、操作方法和实验步骤 五、实验数据记录和处理 六、实验结果与分析(必填) 七、讨论、心得 一、实验目的和要求 1. 掌握DFT 的原理和实现 2. 掌握FFT 的原理和实现,掌握用 FFT 对连续信号和离散信号进行谱分析的方法。 二、实验内容和原理 2.1 DTFT 和 DFT N 1 如果x(n)为因果有限长序列,n=0,1,...,N-1,则x(n)的DTFT 表示为:X(e j ) x(n)e n 0 序列的N 点DFT 是DTFT 在[0,2 n 上的N 点等间隔采样,采样间隔为2 d N 。通过DFT , 可以完成由一组有限个信号采样值 x(n)直接计算得到一组有限个频谱采样值 X(k)。X(k)的幅 度谱为X(k) v 'x R (k ) X |2(k ) , X R (k)和X i (k)分别为X(k)的实部和虚部。X(k)的相位谱 为(k) 列吩 序列x(n)的离散事件傅里叶变换(DTFT )表示为: X(e j ) x( n)e x(n)的离散傅里叶变换(DFT )表达式为: X(k) x(n)e n 0 j^nk N (k 0,1,…,N 1)

IDFT )定义为 x(n)丄 N \(k)e j_Nnk (n 0,1,…,N 1) N n 0 2.2 FFT 快速傅里叶变换(FFT )是DFT 的快速算法,它减少了 DFT 的运算量,使数字信号的处理 速度大大提高。 三、主要仪器设备 PC 一台,matlab 软件 四、实验内容 4.1第一题 x(n)的离散时间 傅里叶变换(DTFT ) X(e j Q )并绘图。 0 其2他n 2; (2)已知 x(n) 2n 0 n 10。 0其他 4.1.1理论分析 1) 由DTFT 计算式, X (Q)是实数,可以直接作出它的图像。 离散傅里叶反变换 求有限长离散时间信号 (1)已知 x(n) X( ) x(n)e j n e 2j 1 5j e 1 e j e 2? e 2? 0.5j e 0.5 j e sin(2.5 )

实验四 离散傅里叶变换的性质

实验四离散傅里叶变换的性质 一、实验目的 1. 熟悉matlab软件中离散傅里叶变换的实现方法及FFT函数的使用方法; 2. 通过软件仿真,加深对离散傅里叶变换性质的理解。 二、实验内容 1. 验证离散傅里叶变换的线性性质; 2. 掌握用matlab实现圆周移位的方法; 3. 验证圆周卷积与线性卷积的关系。 三、实验步骤 1. 验证线性性质 设两个有限长序列分别为xn1=[3,1,-2,2,3,4],xn2=[1,1,1,1],做4DFT[xn1]+2DFT[xn2],及DFT[4xn1+2xn2]的运算,比较它们的结果。 代码如下: clear,N=20;n=[0:1:N-1]; xn1=[3,1,-2,2,3,4];n1=0:length(xn1)-1; %定义序列xn1 xn2=[1,1,1,1];n2=0:length(xn2)-1; %定义序列xn2 yn1=4*xn1;yn2=2*xn2;[yn,ny]=seqadd(yn1,n1,yn2,n2); %计算4xn1+2xn2 xk1=fft(xn1,N);xk2=fft(xn2,N); %分别求DFT[xn1] 和DFT[xn2] yk0=4*xk1+2*xk2; %计算4DFT[xn1]+2DFT[xn2] yk=fft(yn,N); %计算DFT[4xn1+2xn2] subplot(2,1,1);stem(n,yk0);title('傅里叶变换之和') %显示4DFT[xn1]+2DFT[xn2] subplot(2,1,2);stem(n,yk);title('序列和之傅里叶变换') %显示DFT[4xn1+2xn2] 运行结果如图1所示,从图中可知,用两种方法计算的DFT完全相等,所以离散傅里叶变换的线性性质得到验证。

实验2 离散时间傅里叶变换

电 子 科 技 大 学 实 验 报 告 学生姓名:项阳 学 号: 2010231060011 指导教师:邓建 一、实验项目名称:离散时间傅里叶变换 二、实验目的: 熟悉序列的傅立叶变换、傅立叶变换的性质、连续信号经理想采样后进行重建,加深对时域采样定理的理解。 三、实验内容: 1. 求下列序列的离散时间傅里叶变换 (a) ()(0.5)()n x n u n = (b) (){1,2,3,4,5}x n = 2. 设/3()(0.9),010,j n x n e n π=≤≤画出()j X e ω并观察其周期性。 3. 设()(0.9),1010,n x n n =--≤≤画出()j X e ω并观察其共轭对称性。 4. 验证离散时间傅里叶变换的线性、时移、频移、反转(翻褶)性质。 5. 已知连续时间信号为t a e t x 1000)(-=,求: (a) )(t x a 的傅里叶变换)(Ωj X a ; (b) 采样频率为5000Hz ,绘出1()j X e ω,用理想内插函数sinc()x 重建)(t x a ,并对结果进行讨论; (c) 采样频率为1000Hz ,绘出2()j X e ω,用理想内插函数sinc()x 重建)(t x a ,并对结果进行讨论。 四、实验原理:

1. 离散时间傅里叶变换(DTFT)的定义: 2.周期性:()j X e ?是周期为2π的函数 (2)()()j j X e X e ??π+= 3.对称性:对于实值序列()x n ,()j X e ?是共轭对称函数。 *()() Re[()]Re[()] Im[()]Im[()]()() ()() j j j j j j j j j j X e X e X e X e X e X e X e X e X e X e ??????????-----===-=∠=-∠ 4.线性:对于任何12,,(),()x n x n αβ,有 1212[()()][()][()]F x n x n F x n F x n αβαβ+=+ 5.时移 [()][()]()j k j j k F x n k F x n e X e e ωωω---== 6.频移 00()[()]()j n j F x n e X e ωωω-= 7.反转(翻褶) [()]()j F x n X e ω--= 五、实验器材(设备、元器件): PC 机、Windows XP 、MatLab 7.1 六、实验步骤: 本实验要求学生运用MATLAB 编程产生一些基本的离散时间信号,并通过MATLAB 的几种绘图指令画出这些图形,以加深对相关教学内容的理解,同时也通过这些简单的函数练习了MATLAB 的使用。 [()]()()(), ()j j jn z e n n F x n X e X z x n e x n ωωω∞-==-∞∞=-∞===<∞∑∑收敛条件为:

实验离散时间傅里叶变换和离散傅里叶变换

实验二离散时间傅里叶变换和离散傅里叶变换 一.实验目的 1.深刻理解离散时间信号傅里叶变换的定义,与连续傅里叶变换之间的关系; 2.深刻理解序列频谱的性质(连续的、周期的等); 3.能用MATLAB编程实现序列的DTFT,并能显示频谱幅频、相频曲线; 4.深刻理解DFT的定义、DFT谱的物理意义、DFT与DTFT之间的关系; 5.能用MATLAB编程实现有限长序列的DFT; 6.熟悉循环卷积的过程,能用MA TLAB编程实现循环卷积运算。 二.实验原理 1.离散时间信号的频谱和图示化 2.离散傅里叶变换的定义和图示化 三.实验结果 w=[0:2:500]*pi*2/500; h=(1+0.9*exp(-j*w))./(1-0.9*exp(-j*w)); magh=abs(h); plot(w/pi,magh);grid;xlabel('f');ylabel('|H(w)|'); n=[0:127]; m=[0:127]; x=exp(j*2*pi/128*m.*n); [xk]=dft(x,128); stem(n,xk);xlabel('n');ylabel('xk');

n=[0:127]; m=[0:127]; x=cos(2*pi/128*m.*n); [xk]=dft(x,128); stem(n,xk);xlabel('n');ylabel('xk'); n=[0:127]; m=[0:127]; [xk]=dft(x,128); stem(n,xk);xlabel('n');ylabel('xk'); n=[0:127];m=[0,127]; x=sin(n); [xk]=dft(x,128); stem(n,xk);xlabel('n');ylabel('xk');

实验三离散傅里叶变换

实验三 离散傅里叶变换 一 实验目的 1、理解和加深DFS 和DFT 的概念及其性质; 2、学习利用离散傅里叶变换分析信号的频谱。 二 实验设备 1、计算机 2、MA TLAB R2007a 仿真软件 三 实验原理 离散傅里叶变换在时域和频域都离散有限的特点,使其成为信号分析与处理中的一个最根本的也是最常用的变换。然而,但序列的长度N 很大时,直接计算DFT 需要很大的计算量。快速傅里叶变换使DFT 的运算效率提高数个数量级,为数字信号处理技术应用与各种信号的实时处理创造了良好的条件。MA TLAB 提供了用于快速计算DFT 的fft 函数,其调用格式为:y=fft(x) 或 y=fft(x,N);fft 函数用来计算序列)(n x 的N 点DFT ,如果序列的长度小于N ,则函数在序列的尾部补零至N 点;而当序列的长度大于N 时,函数对序列进行截短。为了提高运行速度,通常将N 取为2的整数次幂。 四 实验内容 1、上机实验前,认真阅读实验原理,掌握DFS 和DFT 的基本概念; 2、掌握离散傅里叶变换分析信号频谱的MATLAB 实现方法。 实例1:求周期序列)()(~ 5 ~ n R n x ,周期分别为N=20 和N=60时的)(~ k X 。 将下列指令编辑到“exlfft.m ”文件中: clc; close all; clear all; L=5;N1=20;N2=60; xn1=[ones(1,L),zeros(1,N1-L)]; xn2=[ones(1,L),zeros(1,N2-L)]; n1=0:N1-1; n2=0:N2-1; Xk1=fft(xn1,N1); Xk2=fft(xn2,N2); magXk1=abs(Xk1); magXk2=abs(Xk2); k1=[-N1/2:N1/2];

MATLAB的离散傅里叶变换的仿真

应用MATLAB对信号进行频谱分析及滤波 设计目的 要求学生会用MATLAB语言进行编程,绘出所求波形,并且运用FFT求对连续信号进行分析。 一、设计要求 1、用Matlab产生正弦波,矩形波,并显示各自的时域波形图; 2、进行FFT变换,显示各自频谱图,其中采样率、频率、数据长度自选,要求注明; 3、绘制三种信号的均方根图谱; 4、用IFFT回复信号,并显示恢复的正弦信号时域波形图。 二、系统原理 用FFT对信号作频谱分析是学习数字信号处理的重要内容。经常需要进行频谱分析的信号是模拟信号和时域离散信号。频谱分辨率直接和FFT的变换区间N有关,因为FFT能够实现频率分辨率是2π/N。 x(n)是一个长度为M的有限长序列,则x(n)的N点离散傅立叶变换为: N?1?2?kn)(nx j?W W NN e?0?n N X(k)=DFT[x(n)]=,k=0,1,...,N-1N?11?kn?)(WXk N N0?n x(n) =IDFT[X(k)]= 逆变换:,k=0,1,...,N-1 但FFT是一种比DFT更加快速的一种算法,提高了DFT的运算速率,为数字信号处理技术应用于各种信号处理创造了条件,大大提高了数字信号处理技术的发展。本实验就是采用FFT,IFFT对信号进行谱分析。 三、程序设计 fs=input('please input the fs:');%设定采样频率 N=input('please input the N:');%设定数据长度 t=0:0.001:1; f=100;%设定正弦信号频率 %生成正弦信号 x=sin(2*pi*f*t); figure(1); subplot(211); plot(t,x);%作正弦信号的时域波形 axis([0,0.1,-1,1]); title('正弦信号时域波形'); z=square(50*t); subplot(212) plot(t,z) axis([0,1,-2,2]); title('方波信号时域波形');grid;

离散傅里叶变换及其特性验证

实验名:离散傅里叶变换及其特性验证 一、实验目的 1、掌握离散时间傅立叶变换(DTFT )的计算方法和编程技术。 2、掌握离散傅立叶变换(DFT )的计算方法和编程技术。 3、理解离散傅立叶变换(DFT )的性质并用MA TLAB 进行验证。 二、实验原理与计算方法 1、离散时间傅立叶变换 如果序列x (n )满足绝对可和的条件,即 ∞<∑∞ -∞ =n n x |)(|, 则其离散时间傅立叶变换定义为: ∑∞ -∞ =-= =n n j j e n x n x F e X ωω)()]([)( (1) 假设序列x (n )在N n n n ≤≤1(即不一定在[0, N -1])有N 个样本,要估计下列各点上的X (e j ω): M k k M k ...,2,1,0== , π ω 它们是[0,π]之间的(M +1)个等间隔频点,则(1)式可写成: M k n x e e X N l l kn M j j l ...,2,1,0)()(1==∑=-, πω (2) 将{x (n l )}和{X (e j ωk )}分别排列成向量x 和X ,则有: X=Wx (3) 其中W 是一个(M +1)×N 维矩阵: ? ?? ???=≤≤=-M k n n n e N kn M j ...,2,1,0;1, πW 将{k }和{n }排成列向量,则????????? ? ?-=n k W T M j πexp 在MA TLAB 中,把序列和下标排成行向量,对(3)式取转置得: ? ???? ???? ??-=k n x X T T T M j πexp 其中n T k 是一个N ×(M +1)维矩阵。用MATLAB 实现如下: k=[0:M]; n=[n1:n2]; X=x*(exp(-j*pi/M)).^(n ’*k); 2、离散傅立叶变换 一个有限长序列的离散傅立叶变换对定义为: 10,)()(1 0-≤≤=∑-=N k W n x k X N n nk N (4) 10,)(1 )(1 -≤≤=∑-=-N n W k X N n x N k kn N (5) 以列向量x 和X 形式排列x (n )和X (k ),则式(4)、(5)可写成: X =W N x 可由下面的MA TLAB 函数dft 和idft 实现离散傅立叶变换运算。

实验3 离散序列的傅里叶变换的MATLAB实现

实验3离散序列的傅里叶变换的MATLAB 实现 1. 实验目的 熟悉离散序列的傅里叶变换理论及其MATLAB 实现。 2.实例分析 2.1离散序列傅里叶变换的MATLAB 实现 例2.1已知()(0.9),1010n x n n =--≤≤,求其离散时间傅里叶变换,并讨论其共轭对称性。 根据离散序列傅里叶变换公式:()()j j n n X e x n e ω ω∞-=-∞=∑,将下列指令编辑到 “exe2dtft.m ”文件中。其中ω∈[?2π,2π],并以pi/100为间隔取值。 % exe2dtft.m 序列的离散时间傅里叶变换 n=-10:10; x=(-0.9).^n; k=-200:200; w= (pi/100)*k; X=x*(exp(-j*pi/100)).^(n'*k); magX=abs(X); angX=angle(X); subplot(2,1,1);plot(w,magX);xlabel('Frequency');ylabel('|X|');grid on ; subplot(2,1,2);plot(w,angX);xlabel('Frequency');ylabel('Angle');grid on ; 运行“exe2dtft.m ”文件将产生如图2-3所示的序列。 由图2-3可知,()j X e ω不仅是ω的周期函数,而且是共轭对称的。因此,对于实值序列,只需从0到π画出他们的傅里叶变换的幅度和相位就够了。

图2-1离散序列的DTFT 2.2离散系统差分方程的MATLAB 求解方法 例2.2一个三阶低通滤波器由下面差分方程描述: ()0.0181()0.0543(1)0.0543(2)0.0181(3)1.76(1) 1.1829(2)0.2781(3) y n x n x n x n x n y n y n y n =+-+-+-+---+- 画出这个滤波器的幅度和相位响应。 将下列指令编辑到“exe2sysfreq.m ”文件中。 % exe2sysfreq.m 系统频率响应 a=[0.0181, 0.0543, 0.0543, 0.0181]; b=[1.00, -1.7600, 1.1829, -0.2781]; m=0:length(a)-1; l=0:length(b)-1; N=500; k=0:N; w=pi*k/N; num = a*exp(-j*m'*w);% 分子(numerator ) den = b* exp(-j*l'*w); % 分母(denominator ) H=num./den; magH=abs(H); angH=angle(H); subplot(2,1,1);plot(w/pi,magH,'LineWidth',2); xlabel('Frequency in units of Pi');ylabel('|H|');grid on ; subplot(2,1,2);plot(w/pi,angH,'LineWidth',2);

实验二 离散时间傅里叶变换

实验二 离散时间傅里叶变换 一.实验原理 1、经由正、逆离散时间傅里叶变换表达的信号傅里叶表示式是信号分析的一个关键部分。 X(ωj e )= ∑∞-∞=-n ][x n j e n ω(3.9) ωωωd e )e (21][x n j j ?-=ππ πX n (3.10) 类似地,当LTI 系统用于滤波时,作为冲击响应离散时间傅里叶变换的频率响应,提供了LTI 系统简介的描述。离散时间傅里叶变换X(ωj e )是ω的周期复值函数,周期总是2π,并且基周期通常选在区间[-π,π)上。对离散时间傅里叶变换DTFT 来说有两个问题: (1)DTFT 的定义对无限长信号是有效的。 (2)DTFT 是连续变量ω的函数。 在MA TLAB 中,任何信号(向量)必须是有限长度的,仅此就是第一点成为问题。因此,不可能使用MATLAB 计算无限长信号的DTFT 。有一个值得注意的例外情形,当能从变换定义式推导出解析式并只是计算它时,可以使用MA TLAB 计算无限长信号的DTFT 。 2、对于频率抽样问题。MATLAB 擅长在有限网格点上计算DTFT 。通常选择足够多的频率以使绘出的图平滑,逼近真实的DTFT 。对计算有利的最好选择是在(-π,π)区间上一组均匀地隔开的频率,或者对共轭对称变换选择[0,π]区间。采用上述抽样办法,DTFT 式变成X(ωj e )=1...2,1,0,][)(1 0)/2(/2-==∑-=-N k e n x e X L n n N k j N k j ππ DTFT 的周期性意味着在-π≤ω<0区间上的数值是那些对k>N/2的数值。因为上市是在有限数量的频率点k ω=2πk/N 处计算,并在有限范围内求和,因此它是可计算的。由于信号长度必须是有限的(0≤n

三、实验原理 离散傅里叶变换.

前言 “数字信号处理”是一门理论和实践密切结合的课程,为了深入地掌握课程内容,应当在学习理论的同时,作习题和上机实验。上机实验不仅可以帮助读者深入地理解和消化基本理论,而且能锻炼初学者的独立解决问题的能力。本课程根据课程重点编写了五个实验,供学生使用或参考。由于数字信号处理实验的主要目的是验证数字信号处理的有关理论,进一步理解巩固所学理论知识,所以,对实验用算法语言不作任何限制。为了提高实验效率,我们提倡学生选用编程效率比C语言高好几倍的MATLAB 语言,按照指导书的要求,上机编程完成实验。

实验一用FFT进行谱分析实验 一、实验目的: (1) 用FFT进行谱分析,了解fft.m文件的各参数及使用方法; (2) 学习提高频率分辨率的方法,加深对栅栏效应和频谱泄漏等概念的理解。 二、实验设备:计算机,MATLAB软件。 三、实验原理: 离散傅里叶变换(DFT)可以用快速傅里叶变换(FFT)算法来计算。在MATLAB信号处理工具箱中,提供了函数fft()、ifft()分别求解离散傅里叶变换与逆变换。调用格式如下: Xk=fft(x) Xk=fft(x,N) 表示计算信号x的快速离散傅里叶变换Xk。当x的长度N为2的整数次方时,采用基2算法,否则采用较慢的分裂基算法。当length(x)>N时,截断x,否则补零。 x=ifft(Xk) x=ifft(Xk,N) 表示计算Xk的逆离散傅里叶变换。 1. 用FFT进行谱分析 用FFT的结果分析x(t)=cos(2π×50t)+ 0.5cos(2π×150t) + 0.3cos(2π×250t)的频谱。 t=0:0.02/64:0.04; f1=50; y1=cos(2*pi*f1*t)+0.5*cos(2*pi*3*f1*t)+0.3*cos(2*pi*5*f1*t);

离散傅里叶变换逆变换实验

实验四:离散傅里叶变换/逆变换实验 4.1实验目的: (1) 深入理解离散傅里叶变换/逆变换的过程。 (2) 了解原始信号与其离散傅里叶变换的关系。 (3) 掌握用计算机实现离散傅里叶变换/逆变换的方法。 4.2实验内容: (1) 计算离散有限长信号x[n] = {1, 1, 1, 1} 的离散傅里叶变换/逆变换,并编程画出原信号及其变换 (2) 计算离散有限长信号x[n] = {1, -1, 1, -1} 的离散傅里叶变换/逆变换,并编程画出原信号及其变换 (3) 计算离散有限长信号x[n] = {1, 2, 3, 4} 的离散傅里叶变换/逆变换,并编程画出原信号及其变换 (4) 计算离散有限长信号x[n] = {4, 3, 2, 1} 的离散傅里叶变换/逆变换,并编程画出原信号及其变换 (5) 自己生成任意有限长离散信号并计算其离散傅里叶变换/逆变换,编程画出原信号及其变换 4.3实验讨论: (1) 原始信号与其离散傅里叶变换具有怎样的关系? (2) 若将原始信号周期拓展得到一个新的周期信号,则新信号的离散傅里叶级数与原始信号的离散傅里叶变换具有怎样的关系? 4.4 实验过程: 傅里叶变换的实质是将一个信号分离为无穷多多正弦/复指数信号的加成,也就是说,把信号变成正弦信号相加的形式——既然是无穷多个信号相加,那对于非周期信号来说,每个信号的加权应该都是零——但有密度上的差别,所以,傅里叶变换之后,横坐标即为分离出的正弦信号的频率,纵坐标对应的是加权密度对于周期信号来说,因为确实可以提取出某些频率的正弦波成分,所以其加权不为零——在幅度谱上,表现为无限大——但这些无限大显然是有区别的,所以我们用冲激函数表示。傅里叶变换把信号由时域转为频域,因此把不同频率的信号在时域上拼接起来进行傅里叶变换是没有意义的——实际情况下,我们隔一段时间采集一次信号进行变换,才能体现出信号在频域上随时间的变化。 t=[1,2,3,4]; y1=[1,1,1,1]; figure(1); stem(t,y1); y2=fft(y1); figure(2); plot(y1,y2);

实验2 离散傅里叶变换(DFT)1

实验2 离散傅里叶变换(DFT) 一、实验目的 (1)加深对离散傅里叶变换(DFT)基本概念的理解。 (2)了解有限长序列傅里叶变换(DFT)与周期序列傅里叶级数(DFS)、离散时间傅里叶变换(DTFT)的联系。 (3)掌握用MA TLAB 语言进行离散傅里叶变换和逆变换的方法。 二、实验内容 1.有限长序列的傅里叶变换(DFT)和逆变换(IDFT) 2.有限长序列DFT 与周期序列DFS 的联系 3.有限长序列DFT 与离散时间傅里叶变换DTFT 的联系 三、实验环境 MA TLAB7.0 四、实验原理 1.有限长序列的傅里叶变换(DFT)和逆变换(IDFT) 在实际中常常使用有限长序列。如果有限长序列信号为x(n),则该序列的离散傅里叶变换对可以表示为 1N ,0,1,k , W x (n)DFT[x (n)]X(k)1 N 0n nk N -===∑-= (2-1) 1 N ,0,1,n , W X(k)N 1IDFT[X(k)]x (n)1N 0 k nk N -===∑-=- (2-2) 从离散傅里叶变换定义式可以看出,有限长序列在时域上是离散的,在频域上也是离散 的。式中,N π2j N e W -=即仅在单位圆上N 个等间距的点上取值,这为使用计算机进行 处理带来了方便。 由有限长序列的傅里叶变换和逆变换定义可知,DFT 和DFS 的公式非常相似,因此在程序编写上也基本一致。 例2-1 已知x(n)=[0,1,2,3,4,5,6,7],求x(n)的DFT 和IDFT 。要求: (1)画出序列傅里叶变换对应的|X(k)|和arg [X(k)]图形。 (2)画出原信号与傅里叶逆变换IDFT [X(k)]图形进行比较。 解 MA TLAB 程序如下:

实验三离散傅里叶变换

实验三离散傅里叶变换

————————————————————————————————作者:————————————————————————————————日期:

实验三 离散傅里叶变换 一 实验目的 1、理解和加深DFS 和DFT 的概念及其性质; 2、学习利用离散傅里叶变换分析信号的频谱。 二 实验设备 1、计算机 2、MA TLAB R2007a 仿真软件 三 实验原理 离散傅里叶变换在时域和频域都离散有限的特点,使其成为信号分析与处理中的一个最根本的也是最常用的变换。然而,但序列的长度N 很大时,直接计算DFT 需要很大的计算量。快速傅里叶变换使DFT 的运算效率提高数个数量级,为数字信号处理技术应用与各种信号的实时处理创造了良好的条件。MA TLAB 提供了用于快速计算DFT 的fft 函数,其调用格式为:y=fft(x) 或 y=fft(x,N);fft 函数用来计算序列)(n x 的N 点DFT ,如果序列的长度小于N ,则函数在序列的尾部补零至N 点;而当序列的长度大于N 时,函数对序列进行截短。为了提高运行速度,通常将N 取为2的整数次幂。 四 实验内容 1、上机实验前,认真阅读实验原理,掌握DFS 和DFT 的基本概念; 2、掌握离散傅里叶变换分析信号频谱的MATLAB 实现方法。 实例1:求周期序列)()(~ 5 ~ n R n x ,周期分别为N=20 和N=60时的)(~ k X 。 将下列指令编辑到“exlfft.m ”文件中: clc; close all; clear all; L=5;N1=20;N2=60; xn1=[ones(1,L),zeros(1,N1-L)]; xn2=[ones(1,L),zeros(1,N2-L)]; n1=0:N1-1; n2=0:N2-1; Xk1=fft(xn1,N1); Xk2=fft(xn2,N2); magXk1=abs(Xk1); magXk2=abs(Xk2);

快速傅里叶变换实验

快速傅里叶变换实验

实验七快速傅里叶变换实验 2011010541 机14 林志杭 一、实验目的 1.加深对几个特殊概念的理解:“采样”……“混叠”;“窗函数”(截断)……“泄漏”;“非整周期截取”……“栅栏”。 2.加深理解如何才能避免“混叠”,减少“泄漏”,防止“栅栏”的方法和措施以及估计这些因素对频谱的影响。 3.对利用通用微型计算机及相应的FFT软件,实现频谱分析有一个初步的了解。 二、实验原理 为了实现信号的数字化处理,利用计算机进行频谱分析――计算信号的频谱。由于计算机只能进行有限的离散计算(即DFT),因此就要对连续的模拟信号进行采样和截断。而这两个处理过程可能引起信号频谱的畸变,从而使DFT的计算结果与信号的实际频谱有误差。有时由于采样和截断的处理不当,使计算出来的频谱完全失真。因此在时域处理信号时要格外小心。

时域采样频率过低,将引起频域的“混叠”。为了避免产生“混叠”,要求时域采样时必须满足采样定理,即:采样频率fs必须大于信号中最高频率fc的2倍( fs> 2fc)。因此在信号数字处理中,为避免混叠,依不同的信号选择合适的采样频率将是十分重要的。 频域的“泄漏”是由时域的截断引起的。时域的截断使频域中本来集中的能量向它的邻域扩散(如由一个δ(f)变成一个sinc(f),而泄漏的旁瓣将影响其它谱线的数值。时域截断还会引起“栅栏效应”,对周期信号而言,它是由于截断长度不等于周期信号的周期的整数倍而引起的。因此避免“栅栏”效应的办法就是整周期截断。 综上所述,在信号数字化处理中应十分注意以下几点: 1.为了避免“混叠”,要求在采样时必须满足采样定理。 为了减少“泄漏”,应适当增加截断长度和选择合适的窗 对信号进行整周期截取,则能消除“栅栏数应”。增加截断长度,则可提高频率分辨率。

实验二 离散傅里叶变换(DFT)实验

实验二 离散傅里叶变换(DFT )实验 【实验目的】 1.进一步熟悉CCS 集成开发环境的软硬件调试方法 2.学习DFT 的基本原理 3.掌握如何在DSP 中实现DFT 算法 【实验内容】 1. 了解DFT 的基本原理。 2.了解命令文件中伪指令MEMORY 和SECTIONS 的作用。 2. CCS 中的软硬件开发环境的熟悉。 3. 常用信号(包括正弦波,方波,三角波,锯齿波)的DFT 。 【实验器材】 1.DSP 开发板 2.DSP 仿真器 3 .PC 机(软件:CCS ,全称:Code composer studio ) 三 实验原理 。傅里叶变换是一种将信号从时域变换到频域的变换形式,是信号处理的重要分析工具。离散傅里叶变换(DFT )是傅里叶变换在离散系统中的表示形式。 本实验是在学生首先产生一信号后,对该信号进行DFT ,并在CCS 中利用其自带的观察窗口或Memory 菜单来查看变换前后的波形或频谱值,从而完成了一个简易频谱分析仪。让学生更加直观形象地体会DFT 的整个过程 假设信号为x (0),x(1),……,x (N),那么其离散傅立叶变换后的实部和虚部以及频谱幅度分别为: 2()0 ()()()() N j k n N r i n X k x n e X k jX k π-===+∑ 0 (0)() (0)0N r i i X x i X =∴==∑ 0 02 ()()cos(())2()()sin(())(0) N r n N i i X k x n k n N X k x n k n k N ππ===???=-???>∑∑ ()A k =

Matlab 离散傅里叶变换 实验报告

陕西科技大学实验报告 班级信工082 学号16 姓名刘刚实验组别 实验日期室温报告日期成绩 报告内容:(目的和要求,原理,步骤,数据,计算,小结等) 实验三离散傅立叶变换(DFT) 1.离散傅立叶级数 给定有限长序列[1 2 3 4],延拓为周期N=6的周期序列,并求其DFS。 代码: N1=6;x1=[1 2 3 4]; N2=length(x2); n1=0:5*N2-1; x2=[x1,zeros(1,(6-length(x1)))];k=0:5*N2-1;x3=x2(mod(n1,N2)+1) Xk=x3*exp(-j*2*pi/N1).^(n1'*k); subplot(321),stem(x1,'.');title('原序列') subplot(322),stem(x3,'.');title('原序列周期延拓') subplot(312),stem(Xk,'.');title('DFS') subplot(325),stem(abs(Xk),'.');title('DFS模值') subplot(326),stem(angle(Xk),'.');title('DFS相位') 结果:

2.求以下序列的N=16,32,64点的快速傅立叶变换 x(n)=exp(-i*pi/8*n);x2(n)=cos(pi/8*n);x3(n)=sin(pi/8*n) (1)代码: Fs=20; N1=16;n1=0:N1-1;xn1=exp(-i*pi/8*n1);D1=2*pi*Fs/N1; N2=32;n2=0:N2-1;xn2=exp(-i*pi/8*n2);D2=2*pi*Fs/N2; N3=64;n3=0:N3-1;xn3=exp(-i*pi/8*n3);D3=2*pi*Fs/N3; k1=floor(-(N1-1)/2:(N1-1)/2);k2=floor(-(N2-1)/2:(N2-1)/2); k3=floor(-(N3-1)/2:(N3-1)/2); X1=fft(xn1,N1);X2=fft(xn2,N2);X3=fft(xn3,N3); subplot(3,4,1);stem(n1,xn1);title('原信号');ylabel('C=16') subplot(3,4,2);stem(X1,'.');title('FFT结果X'); subplot(3,4,3);stem(k1*D1,abs(X1));title('X的模值'); subplot(3,4,4);plot(k1*D1,angle(X1));title('X的相位'); subplot(3,4,5);stem(n2,xn2);ylabel('C=32') subplot(3,4,6);stem(X2,'.'); subplot(3,4,7);stem(k2*D2,abs(X2)); subplot(3,4,8);plot(k2*D2,angle(X2)); subplot(3,4,9);stem(n3,xn3);ylabel('C=64') subplot(3,4,10);stem(X3,'.'); subplot(3,4,11);stem(k3*D3,abs(X3)); subplot(3,4,12);plot(k3*D3,angle(X3)); 结果:

相关主题
文本预览
相关文档 最新文档