离散傅里叶变换和快速傅里叶变换Word格式文档下载.docx

上传人:b****6 文档编号:19907628 上传时间:2023-01-12 格式:DOCX 页数:33 大小:250.43KB
下载 相关 举报
离散傅里叶变换和快速傅里叶变换Word格式文档下载.docx_第1页
第1页 / 共33页
离散傅里叶变换和快速傅里叶变换Word格式文档下载.docx_第2页
第2页 / 共33页
离散傅里叶变换和快速傅里叶变换Word格式文档下载.docx_第3页
第3页 / 共33页
离散傅里叶变换和快速傅里叶变换Word格式文档下载.docx_第4页
第4页 / 共33页
离散傅里叶变换和快速傅里叶变换Word格式文档下载.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

离散傅里叶变换和快速傅里叶变换Word格式文档下载.docx

《离散傅里叶变换和快速傅里叶变换Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《离散傅里叶变换和快速傅里叶变换Word格式文档下载.docx(33页珍藏版)》请在冰豆网上搜索。

离散傅里叶变换和快速傅里叶变换Word格式文档下载.docx

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

每道题包含如下内容:

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

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

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

(1)已知

(2)已知

【解答】

思路:

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

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

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

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

functionDTFT(n1,n2,x)

%ThisisaDTFTfunctionformyexperimentofSignalProcessing&

Analysis.

w=0:

2*pi/1000:

2*pi;

%Definethebracketofomegaforplotting.

X=zeros(size(w));

%DefinetheinitialvaluesofX.

fori=n1:

n2

X=X+x(i-n1+1)*exp((-1)*j*w*i);

%ItisthedefinitionofDTFT.

end

Amp=abs(X);

%Acquiretheamplification.

Phs=angle(X);

%Acquirethephaseangle(radian).

subplot(1,2,1);

plot(w,Amp,'

r'

);

xlabel('

\Omega'

ylabel('

Amplification'

holdon;

%Plotamplificationontheleft.

subplot(1,2,2);

plot(w,Phs,'

b'

xlabel('

PhaseAngle(radian)'

holdoff;

%Plotphaseangleontheright.

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

(1)小题

>

n=(-2:

2);

x=1.^n;

DTFT(-2,2,x);

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

(2)小题

n=(0:

10);

x=2.^n;

DTFT(0,10,x);

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

【分析】

对于第

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

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

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

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

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

对于第

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

而它的表达式:

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

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

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

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

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

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

M文件源代码:

i)DFT函数:

functionDFT(N,x)

%ThisisaDFTfunctionformyexperimentofSignalProcessing&

k=(0:

N-1);

%DefinevariablekforDFT.

X=zeros(size(k));

%DefinetheinitialvalvesofX.

fori=0:

N-1

X=X+x(i+1)*exp((-1)*j*2*k*pi/N*i);

%ItisthedefinitionofDFT.

stem(k,Amp,'

.'

’MarkerSize’,18);

k'

stem(k,Phs,'

*'

ii)基2-FFT函数

functionmyFFT(N,x)

%Thisisabase-2FFTfunction.

lov=(0:

j1=0;

fori=1:

N%indexedaddressing

ifi<

j1+1

temp=x(j1+1);

x(j1+1)=x(i);

x(i)=temp;

end

k=N/2;

whilek<

=j1

j1=j1-k;

k=k/2;

j1=j1+k;

digit=0;

k=N;

whilek>

1

digit=digit+1;

n=N/2;

%Nowwestartthe"

butterfly-shaped"

process.

formu=1:

digit

dif=2^(mu-1);

%Differncebetweentheindexesofthetargetvariables.

idx=1;

fori=1:

n

idx1=idx;

idx2=1;

forj1=1:

N/(2*n)

r=(idx2-1)*2^(digit-mu);

wn=exp(j*(-2)*pi*r/N);

%Itisthe"

circulatingcoefficients"

.

temp=x(idx);

x(idx)=temp+x(idx+dif)*wn;

x(idx+dif)=temp-x(idx+dif)*wn;

idx=idx+1;

idx2=idx2+1;

idx=idx1+2*dif;

n=n/2;

Amp=abs(x);

Phs=angle(x);

stem(lov,Amp,'

FFTk'

FFTAmplification'

%Plottheamplification.

stem(lov,Phs,'

FFTPhaseAngle(radian)'

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

DFT:

x=[8,7,9,5,1,7,9,5];

DFT(8,x);

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

FFT:

myFFT(8,x);

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

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

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

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

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

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

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

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

因此计算正确。

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

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

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

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

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

这里取g=0(无白噪声)。

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

i)采样函数:

functionxs=sampJune3(N,Ts,g)

%ThisisafunctionappliedtoProblem3&

4.

%N:

numberofsamplingpoints;

Ts:

samplingperiod;

g=0:

Nogaussiannoise;

g=1:

gussiannoiseexists.

n=1:

N;

N%Notethatimuststartat0inanalysis.ThusImadeaadaptation.

sample(i)=3*cos(8*pi*Ts*(i-1))+g*randn;

%InMatlab,indexstartsat1,whichisnotconsistentwithourhabit.ThusImadeaadaptationincodes.

%Itisasamplingprocesswith(g=1)/without(g=0)noise.

xs=sample;

plot(n-1,sample,'

n'

value'

%Mustuse(n-1),becauseinMatlab,indexstartsat1.

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

不需再新编一个。

12点采样:

xs=sampJune3(12,0.1,0);

%末尾的0表示无噪声。

DFT(12,xs);

myFFT(12,xs);

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

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

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

出现了频谱泄漏。

20点采样:

xs=sampJune3(20,0.1,0);

DFT(20,xs);

myFFT(20,xs);

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

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

频谱无泄漏。

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

28点采样:

xs=sampJune3(28,0.1,0);

DFT(28,xs);

myFFT(28,xs);

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

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

再次出现频谱泄漏。

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

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

现在与原信号频谱

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

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

原信号的频谱是

,在±

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

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

8)π(k为整数)处非0。

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

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

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

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

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

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

这里取g=1(有白噪声)。

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

不需要再新编程序。

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

sampJune3(N,Ts,g),取g=1,以体现存在白噪声

DFT(N,x)

myFFT(N,x)

xs=sampJune3(12,0.1,1);

%末尾的1表示有噪声。

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

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

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

xs=sampJune3(20,0.1,1);

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

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

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

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

 

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

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

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

仍然与原信号的频谱

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

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

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

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

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

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

3.5已知序列

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

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

,求y(n)。

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

的实部,求w(n)。

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

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

这是对DFT进行变换后求IDFT。

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

首先,∵

∴它的6点采样是序列是

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

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

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

functionX=ExportDFT(N,x)

%ThisisaDFTfunctionthatexportsthesolutiontovectorX.

%DefinevariablekforDFT.

%DefinetheinitialvalvesofX.

%ItisthedefinitionofDFT.

ii)算第

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

functionY=Convertor1(X)

%Thisisamathematicalconvertorforthesubproblem

(1).

fork=1:

6

Y(k)=exp((-j)*2*pi*(-4*(k-1))/6)*X(k);

%Herewemustuse(k-1),becauseinMatlabindexstartsat1.

iii)算第

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

functionW=Convertor2(X)

%Thisisamathematicalconvertorforthesubproblem

(2).

W=real(X);

%AcquiretherealpartofX.

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

functionQ=Convertor3(X)

%Thisisamathematicalconvertorforthesubproblem(3).

Q=zeros(3);

%Detailedexplanationgoeshere

fortmp=1:

3

Q(tmp)=X(2*tmp);

v)输出IDFT的函数:

functionx=ExportIDFT(N,X)

%ThisistheIDFTfunctionformyexperiment.

n=(0:

%DefinevariablenforIDFT.

x=zeros(size(n));

%Definetheinitialvalvesofx.

fork=0:

x=x+X(k+1)*exp(j*2*k*pi/N*n);

x=x/N;

a=real(x);

%WeMUSTusereal(x),thoughwemayALREADYknowxisreal.

%It'

scausedbynumericcalculation(notanalyticcalculation)inMatlab.

stem(n,a,'

'

MarkerSize'

18);

Solution'

x=[4,3,2,1,0,0];

X=ExportDFT(6,x);

Y=Convertor1(X);

y=ExportIDFT(6,Y)

y=

Columns1through4

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

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

Columns5through6

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

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

答案:

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

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

W=Convertor2(X);

w=ExportIDFT(6,W)

w=

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

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

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

图3.5.2

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

当前位置:首页 > 高等教育 > 教育学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1