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

上传人:b****1 文档编号:1786113 上传时间:2023-05-01 格式:DOCX 页数:36 大小:359.82KB
下载 相关 举报
离散傅里叶变换和快速傅里叶变换.docx_第1页
第1页 / 共36页
离散傅里叶变换和快速傅里叶变换.docx_第2页
第2页 / 共36页
离散傅里叶变换和快速傅里叶变换.docx_第3页
第3页 / 共36页
离散傅里叶变换和快速傅里叶变换.docx_第4页
第4页 / 共36页
离散傅里叶变换和快速傅里叶变换.docx_第5页
第5页 / 共36页
离散傅里叶变换和快速傅里叶变换.docx_第6页
第6页 / 共36页
离散傅里叶变换和快速傅里叶变换.docx_第7页
第7页 / 共36页
离散傅里叶变换和快速傅里叶变换.docx_第8页
第8页 / 共36页
离散傅里叶变换和快速傅里叶变换.docx_第9页
第9页 / 共36页
离散傅里叶变换和快速傅里叶变换.docx_第10页
第10页 / 共36页
离散傅里叶变换和快速傅里叶变换.docx_第11页
第11页 / 共36页
离散傅里叶变换和快速傅里叶变换.docx_第12页
第12页 / 共36页
离散傅里叶变换和快速傅里叶变换.docx_第13页
第13页 / 共36页
离散傅里叶变换和快速傅里叶变换.docx_第14页
第14页 / 共36页
离散傅里叶变换和快速傅里叶变换.docx_第15页
第15页 / 共36页
离散傅里叶变换和快速傅里叶变换.docx_第16页
第16页 / 共36页
离散傅里叶变换和快速傅里叶变换.docx_第17页
第17页 / 共36页
离散傅里叶变换和快速傅里叶变换.docx_第18页
第18页 / 共36页
离散傅里叶变换和快速傅里叶变换.docx_第19页
第19页 / 共36页
离散傅里叶变换和快速傅里叶变换.docx_第20页
第20页 / 共36页
亲,该文档总共36页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

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

《离散傅里叶变换和快速傅里叶变换.docx》由会员分享,可在线阅读,更多相关《离散傅里叶变换和快速傅里叶变换.docx(36页珍藏版)》请在冰点文库上搜索。

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

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

实验报告

课程名称:

信号分析与处理指导老师:

成绩:

实验名称:

离散傅里叶变换和快速傅里叶变换实验类型:

基础实验同组学生姓名:

第二次实验离散傅里叶变换和快速傅里叶变换

一、实验目的

1.1掌握离散傅里叶变换()的原理和实现;

1.2掌握快速傅里叶变换()的原理和实现,掌握用对连续信号和离散信号进行谱分析的方法。

1.3会用软件进行以上练习。

二、实验原理

2.1关于的相关知识

序列x(n)的离散事件傅里叶变换()表示为

如果x(n)为因果有限长序列,0,11,则x(n)的表示为

x(n)的离散傅里叶变换()表达式为

序列的N点是序列在频率区间[0,2π]上的N点灯间隔采样,采样间隔为2π。

通过,可以完成由一组有限个信号采样值x(n)直接计算得到一组有限个频谱采样值X(k)。

X(k)的幅度谱为

,其中下标R和I分别表示取实部、虚部的运算。

X(k)的相位谱为

离散傅里叶反变换()定义为

2.2关于的相关知识

快速傅里叶变换()是的快速算法,并不是一个新的映射。

利用了

函数的周期性和对称性以及一些特殊值来减少的运算量,可使的运算量下降几个数量级,从而使数字信号处理的速度大大提高。

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

为了满足采样定理,一般在采样之前要设置一个抗混叠低通滤波器,且抗混叠滤波器的截止频率不得高于与采样频率的一半。

比较和的定义,两者的区别仅在于指数因子的指数部分的符号差异和幅度尺度变换,因此可用算法来计算。

3、实验内容与相关分析(共6道)

说明:

为了便于老师查看,现将各题的内容写在这里——

题目按照3.1、3.2、...、3.6排列。

每道题包含如下内容:

题干、解答(思路、M文件源代码、命令窗口中的运行及其结果)、分析。

其中“命令窗口中的运行及其结果”按照小题顺序排列,各小题包含命令与结果(图形或者序列)。

3.1求有限长离散时间信号x(n)的离散时间傅里叶变换()X(Ω)并绘图。

(1)已知

(2)已知

【解答】

思路:

这是的变换,按照定义编写的M文件即可。

考虑到自变量Ω是连续的,为了方便计算机计算,计算时只取三个周期[-2π,4π]中均匀的1000个点用于绘图。

理论计算的各序列表达式,请见本题的分析。

M文件源代码(我的源文件不支持中文注释,抱歉):

(n12)

a&.

0:

2*1000:

2*.

((w))X.

12

(1+1)*((-1)*j*w*i).

(X).

(X)().

(1,2,1);

(,'r');('\')('');

.

(1,2,2);

(,'b')('\')('()');

.

命令窗口中的运行及其结果(理论计算的各序列表达式,请见本题的分析):

(1)小题

>>(-2:

2);

>>1.^n;

>>(-2,2);

图3.1.1在[-2π,4π]范围内3个周期的幅度谱和相位谱(弧度制)

(2)小题

>>(0:

10);

>>2.^n;

>>(0,10);

图3.1.2在[-2π,4π]范围内3个周期的幅度谱和相位谱(弧度制)

【分析】

对于第

(1)小题,由于序列x(n)只在有限区间(-2,-1,-,1,2)上为1,所以是离散非周期的信号。

它的幅度频谱相应地应该是周期连续信号。

事实上,我们可计算出它的表达式:

,可见幅度频谱拥有主极大和次极大,两个主极大间有|5-14个极小,即有3个次级大。

而对于它的相位频谱,则是周期性地在-π、0、π之间震荡。

对于第

(2)小题,由于是离散非周期的信号。

它的幅度频谱相应地应该是周期连续信号。

而它的表达式:

,因此主极大之间只有|0-11个极小,不存在次级大。

而对于它的相位频谱,则是在一个长为2π的周期内有|11-110次振荡。

而由的定义可知,频谱都是以2π为周期向两边无限延伸的。

由于是连续谱,对于计算机处理来说特别困难,因此我们才需要离散信号的频谱也离散,由此构造出(以及为加速计算的)。

3.2已知有限长序列x(n)={8,7,9,5,1,7,9,5},试分别采用和求其离散傅里叶变换X(k)的幅度、相位图。

【解答】

思路:

按照定义编写M文件即可。

M文件源代码:

i)函数:

()

a&.

(01)k.

((k))X.

01

(1)*((-1)*j*2*k**i).

(X).

(X)().

(1,2,1);

(,'.',’’,18);('k')('');

.

(1,2,2);

(,'*')('k')('()');

.

)基2函数

()

a2.

(01);

j1=0;

1

i

(j1+1);

x(j1+1)(i);

x(i);

2;

k<1

j11;

2;

j11;

0;

;

k>1

1;

2;

2"".

1

2^

(1).

1;

1

1;

2=1;

j1=1(2*n)

(2-1)*2^();

(j*(-2)**)"".

();

x()()*;

x()()*;

1;

22+1;

1+2*;

2;

(x).

(x)().

(1,2,1);

(,'.',’’,18);

('k')('');

.

(1,2,2);

(,'*')('k')('()');

命令窗口中的运行及其结果:

>>[8,7,9,5,1,7,9,5];

>>(8);

图3.2.1的幅度谱和相位谱(弧度制)

>>[8,7,9,5,1,7,9,5];

>>(8);

图3.2.2算法的幅度谱和相位谱(弧度制)

图3.2.1的幅度谱和相位谱(相位是弧度制的)

【分析】

是离散信号、离散频谱之间的映射。

在这里我们可以看到序列的频谱也被离散化。

事实上,我们可以循着构造的方法验证这个频谱:

首先,将序列做8周期延拓,成为离散周期信号。

然后利用计算得到延拓后的频谱:

,从而取的主值区间得到,与图一致。

因此计算正确。

而对于,我们可以看到它给出和一样的结果,说明了算法就是的一个等价形式。

不过,由于序列不够长,在计算速度上的优越性尚未凸显。

3.3已知连续时间信号x(t)=38πt,X(ω)=

,该信号从0开始以采样周期0.1s进行采样得到序列x(n),试选择合适的采样点数,分别采用和求其离散傅里叶变换X(k)的幅度、相位图,并将结果与X(k)的幅度、相位图,并将结果与X(ω)相比较。

【解答】

思路:

此题与下一题都是一样的操作,可以在编程时统一用变量g(0或1)来控制是否有白噪声。

这里取0(无白噪声)。

另外,分别取12点、20点、28点采样,以考察采样长度的选择与频谱是否泄漏的关系。

M文件源代码:

i)采样函数:

3()

a3&4.

:

;:

;0:

;1:

.

1;

1i0.Ia.

(i)=3*(8***

(1))*;

1,.Ia.

a

(1)(0).

;

(1,'.',’’,18)('n')('');

%

(1),,1.

)和基2函数的代码,请见第3.2节。

不需再新编一个。

命令窗口中的运行及其结果:

12点采样:

>>3(12,0.1,0)末尾的0表示无噪声。

>>(12);

>>(12);

图3.3.1进行12点采样得到的序列

图3.3.2的幅度谱和相位谱(弧度制),出现了泄漏

图3.3.3的幅度谱和相位谱(弧度制)。

出现了频谱泄漏。

20点采样:

>>3(20,0.1,0)末尾的0表示无噪声。

>>(20);

>>(20);

图3.3.4进行20点采样得到的序列

图3.3.5的幅度谱和相位谱(弧度制)。

频谱无泄漏。

图3.3.6的幅度谱和相位谱(弧度制)。

频谱无泄漏。

28点采样:

>>3(28,0.1,0)末尾的0表示无噪声。

>>(28);

>>(28);

图3.3.7进行28点采样得到的序列

图3.3.8的幅度谱和相位谱(弧度制)。

再次出现频谱泄漏。

图3.3.9的幅度谱和相位谱(弧度制)。

再次出现频谱泄漏。

【分析】

分别取12点、20点、28点采样,以考察采样长度的选择与频谱是否泄漏之间的关系。

现在与原信号频谱

比较后可以得出如下结论:

图3.3.10原信号的频谱(由两个冲激函数组成)

原信号的频谱是

,在±8π上各有一强度为3π的谱线,在其余频率上为0。

可见原信号被0.1s采样周期的采样信号离散化之后,谱线以20π为周期重复,并且只在(20k±8)π(k为整数)处非0。

那么,在20点(采样时间原信号周期的整数倍)中,只有第8根、第12根谱线非0。

而在12点、28点中,由于采样时间不是原信号周期的整数倍,谱线将向两边泄漏。

不过,对比12点采样和28点采样,我们还可以发现,28点采样频谱的主谱线高度是次谱线高度的4倍,儿12点采样频谱的主谱线高度是次谱线高度的3倍。

可见,在无法保证采样时间是信号周期整数倍的情况下,增加采样时间有助于减轻频谱泄漏的程度。

3.4对第3步中所述连续时间信号叠加高斯白噪声信号,重复第3步过程。

【解答】

思路:

此题与上一题都是一样的操作,可以在编程时统一用变量g(0或1)来控制是否有白噪声。

这里取1(有白噪声)。

另外,仍然分别取12点、20点、28点采样,以考察采样长度的选择与频谱是否泄漏的关系。

M文件源代码:

不需要再新编程序。

可以直接引用上面的函数:

3(),取1,以体现存在白噪声

()

()

命令窗口中的运行及其结果:

12点采样:

>>3(12,0.1,1)末尾的1表示有噪声。

>>(12);

>>(12);

图3.4.1进行12点采样得到的含噪声的序列

图3.4.2含噪声序列的幅度谱和相位谱(弧度制)。

图3.4.3含噪声的幅度谱和相位谱(弧度制)。

20点采样:

>>3(20,0.1,1)末尾的1表示有噪声。

>>(20);

>>(20);

图3.4.4进行20点采样得到的含噪声序列

图3.4.5含噪声的幅度谱和相位谱(弧度制)。

图3.4.6含噪声的幅度谱和相位谱(弧度制)。

28点采样:

>>3(28,0.1,0)末尾的1表示有噪声。

>>(28);

>>(28);

图3.4.7进行28点采样得到的含噪声序列

 

图3.4.8含噪声的幅度谱和相位谱(弧度制)。

图3.4.9含噪声的幅度谱和相位谱(弧度制)。

【分析】

依然分别取12点、20点、28点采样。

仍然与原信号的频谱

(图3.3.10)比较,可以得到结论:

由于叠加了噪声,所以频谱都受到了一定的干扰。

由于白噪声在各个频率的功率相等,因此频谱上各处的干扰也是均匀随机的。

不过,通过对比我们可以发现,20点采样(无噪声时不发生泄漏的采样方法)在存在噪声时,仍然可以明显区分出原信号的谱线。

第二好的是28点采样,因为采样时间较长,即使存在频谱泄漏也能较好地区分原信号的谱线。

而最差的是12点采样,由于噪声的存在和严重的频谱泄漏,它的次谱线与主谱线的高度相差不大,使原信号不明显。

3.5已知序列

,X(k)是x(n)的6点,设

(1)若有限长序列y(n)的6点是

,求y(n)。

(2)若有限长序列w(n)的6点W(k)是

的实部,求w(n)。

(3)若有限长序列q(n)的3点是

,0,1,2,求q(n)。

【解答】

思路:

这是对进行变换后求。

考虑到和定义的对称性,可以在的基础上略加调整既可用于计算。

首先,∵

∴它的6点采样是序列是

值得指出的是,在中,数组的序号是从1开始的(而在信号分析中习惯从0开始),不过我在上面编程时已考虑到这一情况,具体可见实验报告最后的“附录”。

首先生成x(n)的6点,再按照各小题分别转换,最后求相应的。

M文件源代码:

i)输出x(n)的6点的函数:

X=()

aX.

(01);k.

((k));X.

01

(1)*((-1)*j*2*k**i);.

)算第

(1)小题的Y(k)的函数:

Y=1(X)

a

(1).

1:

6

Y(k)(()*2**(-4*

(1))/6)*X(k);

(1)1.

)算第

(2)小题的W(k)的函数:

W=2(X)

a

(2).

(X)X.

)算第(3)小题的Q(k)的函数:

Q=3(X)

a(3).

(3)

1:

3

Q()(2*);

v)输出的函数:

x=()

.

(01)n.

((n))x.

01

(1)*(j*2*k**n);

;

(x)(x),x.

's().

(,'.','',18)('n')('');

命令窗口中的运行及其结果:

>>[4,3,2,1,0,0];

>>(6);

(1)小题

>>1(X);

>>(6)

y=

14

0.0000+0.0000i0.0000+0.0000i4.0000+0.0000i3.0000+0.0000i

%虚部都是0,说明是实数

56

2.0000+0.0000i1.0000-0.0000i%虚部都是0,说明是实数

%事实上,在中,由于数值计算的截断误差,对原复数做乘法后,答案的虚部可能有一极小的量。

答案:

y(n)={0,0,4,3,2,1}

图3.5.1输出的y(n),这是对x(n)的圆周移位。

(2)小题

>>2(X);

>>(6)

w=

14

4.0000+0.0000i1.5000+0.0000i1.0000+0.0000i1.0000+0.0000i

%虚部都是0,说明是实数

56

1.0000+0.0000i1.5000+0.0000i%虚部都是0,说明是实数;

%事实上,在中,由于数值计算的截断误差,对原复数做乘法后,答案的虚部可能有一极小的量。

答案:

w(n)={0,0,4,3,2,1}

图3.5.2输出的w(n)。

第(3)小题

>>3(X);

>>(6)

q=

14

1.5000-0.0000i-0.1667-0.2887i0.7500-1.2990i0.8333-0.0000i

56

-0.5000-0.8660i1.0833-1.8764i

这里的答案都是幅值、相位均非0的复数,而教材(实验指导第109页)并未要求作图,这里略去。

答案:

q(n)={1.5,-0.1667-0.2887i,0.7500-1.2990i,0.8333,-0.5000-0.8660i,1.0833-1.8764i}

【分析】

对原序列进行运算后,可以得到X(k)={10,3.5-4.33i,2.5-0.866i,2,2.5+0.866i,3.5+4.330i}。

(1)小题,根据的性质可以判断,对原频谱乘上旋转因子

之后进行得到的y(n),就是对原序列做圆周移位:

(2)小题,由于对原频谱取了实部,那么根据的奇偶虚实性知,得到的w(n)也是实数的。

第(3)小题,对原信号进行了尺度变换(“抽取”),导致丢失了一些谱线,使得无法通过得到原来的序列x(n)。

说明频谱记录了原有信号的信息,若频谱发生变化,则对应的时域信号也随之改变。

3.6已知信号

,其中f1=4、f2=4.02、f3=5,采用采样频率为20进行采样,求

(1)当采样长度N分别为512和2048情况下x(t)的幅度频谱;

(2)当采样长度N为32,且增补N个零点、4N个零点、8N个零点、16N个零点情况下x(t)的幅度频谱。

【解答】

思路:

采样是有限且离散的,用(算法)计算频谱,以便得到离散的频谱,并且具有较高速度。

20对应的采样周期0.05s。

M文件源代码:

i)采样函数(其中表示采样后补零的个数)

6()

a6

.

1/20;

w1=2**42=2**4.023=2**5;

(1);

(1);

(w1**

(1))(w2**

(1))(w3**

(1));

(1):

()

(p)=0.

)由于只要求显示幅度频谱,所以删去函数中绘制相位频谱的命令,使它的最后部分修改如下:

原来的:

()

a2.

...

(x).

(x)().

(1,2,1);

(,'.')('k')('');

.

(1,2,2);

(,'*')('k')('()');

修改后的:

()

a2.

...

(x).

(,'.')('k')('');

.

命令窗口中的运行及其结果:

(1)小题

>>x5126(512,0);

>>x20486(2048,0);

>>(512512);

>>(20482048);

图3.6.1进行512点采样得到的频谱

图3.6.2进行2048点采样得到的频谱

(2)小题

>>x32p16(32,32*1);%32点采样,补零32个,共64个数据点

>>x32p46(32,32*4);%32点采样,补零4128个,共160个数据点

>>x32p86(32,32*8);%32点采样,补零8256个,共288个数据点

>>x32p166(32,32*16);%32点采样,补零16128个,共544个数据点

>>(32+32*132p1N);

>>(32+32*432p4N);

>>(32+32*832p8N);

>>(32+32*1632p16N);

图3.6.3采样32点,补零32点,共64点的频谱

图3.6.4采样32点,补零4128点,共160点的频谱

图3.6.5采样32点,补零832点,共288点的频谱

图3.6.6采样32点,补零1632点,共544点的频谱

【分析】请注意,题目只要求绘制幅度频谱。

(1)小题:

首先,由于采样时间都不是原有信号周期的整数倍,两个采样方式对应的频谱均发生了泄漏。

不过由于2048点采样对应的采样时间较长,它频谱泄漏的程度比512点采样轻。

其次,由于20的2048点采样的频率分辨率为20/2048=0.0098<0.2,因此放大频谱图之后我们可以看到4、4.02和5对应的谱线,而512点采样的频率分辨率为20/512=0.039>0.2,因此4和4.02对应的谱线无法区分。

(2)小题:

首先,由于采样时间都不是原有信号周期的整数倍,频谱均发生了泄漏。

而且由于采样时间较短,频谱泄漏比第

(1)小题的两个频谱更加严重。

其次,由于都是32点采样,因此实际的频率分辨率较低,无法区分4和4.02对应的谱线。

最后,虽然都是32点采样,但由于补0个数的不同,各频谱谱线间距各不相同。

例如,补零最多的序列一共有544个数据点,因此谱线间距小。

由此还可以得出结论:

数据点个数越多,则频谱越倾向于连续。

可见,当采样时间不是原信号周期整数倍而且采样时间较短时,频谱泄漏相当严重的,所有的频率上都有了幅值即能量,可见当取样信号的样点数取得不够时,原信号所携带的信息就不能被完全取得。

而若将取样信号补零,由图可见信号的能量相应的泄漏到了几乎所有频率上了,这样所得的信号仍然严重失真,因此不能靠将信号补零这样的方法来取得更精确的采样信号。

要想获得不泄漏的频谱,在采样频率不变的前提下,必须使采样时间等于原信号周期的整数倍,或者尽量延长采样时间以减少泄漏。

四、实验体会

4.1关于各个实验的分析,请见第3部分每道题的末尾。

4.2在中,数组的序号是从1开始的,这与信号处理时通常的序号起点(0)不一致。

我在编程充分注意到了这个问题。

4.3由于进行数值计算的过程中存在截断误差,所以最后算得的值并不是准确值。

例如,对一个复数z,即使f(z)的虚部为零,但由于截断误差的存在(特别是z的虚部为无穷小数时),最终f(z)值的虚部可能是一个极小的非零值,从而在显示时出现“零虚部”(例如,2+0.0000i)。

4.4通过利用软件对离散信号的各种变换、以及其快速算法进行计算,使得在实验中比较难以实现的信号分析过程(离散信号的采集和显示都是比较困难的)在计算机计算中实现,证明了理论的正确性,说明仿真计算是一种十分有效的辅助手段。

4.5通过这次实验和上次实验《信号的采集与恢复》我知道了,要想尽量不失真地取得一个信号的频谱(低混叠、低泄漏),应该尽量满足以下条件:

(1)使用的开关函数要尽量接近理想冲激串;

(2)采样频率要高于原始信号的奈奎斯特频率。

对于频谱不受限的信号,为了避免频谱混叠,应该使用低通滤波器进行滤波;

(3)对于频带不受限的信号,抗混叠滤波器要尽量接近理想滤波器。

(4)采样的持续时间最好能够是原信号周期的整数倍,一避免频谱泄漏。

而当不知道原信号的周期(或者周期不稳定)时,就要通过延长采样时间来尽量减少泄漏,从而突出原信号的谱线。

(5)当信号混有白噪声时,就更应注意减少频谱的泄漏和混叠,否则信号分析更加困难,甚至可能会使原信号被误差“淹没”。

(6)若原信号有多个频率成分,应该尽量提高采样的频率分辨率,以区分出更细微的频率差异。

4.6在实验中,在计算2048点采样时,初步体会到了算法的优越性。

在我的计算机上,算法的确比原始的更快。

不过由于采样点数较少,这一差别仅限于几秒钟。

在采样点更多时,在速度上的优越性应该能进一步突出。

4.7实验中遇到的问题及其解决:

实验中有些M文件代码总是出错。

解决方法:

重新检查,在稿纸上演算,体会运算过程。

例如,数组序号起始位置(为1,而非C语言的0)的问题,就是这样发现的。

编程时对代码不熟悉,使得思路比较混乱。

解决方法:

画流程图,理清思路。

对比较复杂的程序尤其如此。

感到大一时C语言教学并未强调流程图,这是一个教学中值得改进的地方。

C语言中,比起掌握运算符优先级,对流程图思想的培养显得更为重要。

附录:

附录A值得指出的是,在中,数组的序号是从1开始的(而在信号分析中习惯从0开始),我在上面编程时已考虑到这一情况。

例如,下面可以验证函数的正确性(顺便也可以验证函数)。

>>1:

8;

>>6*(*

(1)/4);

>>(8);

图附1验证函数

教材112页给出了这一序列的幅度谱。

根据和之间的关系,将上面的幅度谱的幅值缩小8倍并取主周期后,就是上图左侧的幅度谱。

可见我编写的函数正确。

附录B出于兴趣,我们还可以看看和的运行时间。

为了不计绘图,删去和的绘图命令。

通过命令窗口查看运行时间。

(1)16(24)点采样:

>>(0:

15)(0.1*2**n)((n))(16);

0.007936.

>>(0:

15)(0.1*2**n)((n))(16);

0.017714.

(2)2048(211)点采样:

>>(0:

2047)(0.1*2**n)((n))(20

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2