数字信号处理实验.docx

上传人:b****6 文档编号:9012606 上传时间:2023-02-02 格式:DOCX 页数:27 大小:489.63KB
下载 相关 举报
数字信号处理实验.docx_第1页
第1页 / 共27页
数字信号处理实验.docx_第2页
第2页 / 共27页
数字信号处理实验.docx_第3页
第3页 / 共27页
数字信号处理实验.docx_第4页
第4页 / 共27页
数字信号处理实验.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

数字信号处理实验.docx

《数字信号处理实验.docx》由会员分享,可在线阅读,更多相关《数字信号处理实验.docx(27页珍藏版)》请在冰豆网上搜索。

数字信号处理实验.docx

数字信号处理实验

实验三快速傅里叶变换及其应用

实验中用到的信号序列:

高斯序列

0

Xa(n)=

1其他

 

衰减正弦序列:

0

Xb(n)=

1其他

三角波序列:

n0

Xc(n)=8-n4

0其他

反三角波序列:

4-n0

Xd(n)=n-44

0其他

1.观察高斯序列的时域和频域特性,固定信号中p=8,改变q值,使q=2,4,8,观察其时域频域特性,了解q取不同值时的影响;固定信号中q=8,改变p值,使p=8,13,14,观察其时域频域特性,了解q取不同值时的影响,注意p取何值时,会发生明显的泄漏现象,混叠是否也随之出现?

记录实验中观察到的现象,绘出相应的时域和频域特性曲线。

代码:

n=0:

15;

%p=8;q=2;

p=8;q=2;

x=exp((-(n-p).^2)/q)

y=abs(fft(x));

subplot(3,2,1);

stem(n,x);

title('p=8,q=2,’时域特性’);

xlabel('n');

ylabel('Xa');

subplot(3,2,2);

stem(n,y);

title('p=8,q=2,频域特性’);

xlabel('w');

ylabel('h');

%p=8;q=4;

p=8;q=4;

x=exp((-(n-p).^2)/q)

y=abs(fft(x));

subplot(3,2,3);

stem(n,x);

title('p=8,q=4,时域特性’);

xlabel('n');

ylabel('Xa');

subplot(3,2,4);

stem(n,y);

title('p=8,q=4,频域特性’);

xlabel('w');

ylabel('h');

 

%p=8;q=8;

p=8;q=8;

x=exp((-(n-p).^2)/q)

y=abs(fft(x));

subplot(3,2,5);

stem(n,x);

title('p=8,q=8,时域特性’);

xlabel('n');

ylabel('Xa');

subplot(3,2,6);

stem(n,y);

title('p=8,q=8,频域特性’);

xlabel('w');

ylabel('h');

运行结果:

分析:

q越大,信号在时域上越宽,频域上越窄,不易混跌。

 

代码:

n=0:

15;

%p=8;q=8;

p=8;q=8;

x=exp((-(n-p).^2)/q)

y=abs(fft(x));

subplot(3,2,1);

stem(n,x);

title('p=8,q=8,时域特性’);

xlabel('n');

ylabel('Xa');

subplot(3,2,2);

stem(n,y);

title('p=8,q=8,频域特性’);

xlabel('w');

ylabel('h');

%p=13;q=8;

p=13;q=8;

x=exp((-(n-p).^2)/q)

y=abs(fft(x));

subplot(3,2,3);

stem(n,x);

title('p=13,q=8,时域特性’);

xlabel('n');

ylabel('Xa');

subplot(3,2,4);

stem(n,y);

title('p=13,q=8,频域特性’);

xlabel('w');

ylabel('h');

%p=14;q=8;

p=14;q=8;

x=exp((-(n-p).^2)/q)

y=abs(fft(x));

subplot(3,2,5);

stem(n,x);

title('p=14,q=8,时域特性’);

xlabel('n');

ylabel('Xa');

subplot(3,2,6);

stem(n,y);

title('p=14,q=8,频域特性’);

xlabel('w');

ylabel('h');

运行结果:

分析:

P=14时,发生明显泄漏现象,在1/2频率处出现明显混叠。

2.观察衰减正弦序列的时域频域特性,a=0.1,f=0.625,检查谱峰出现位置是否正确,注意频谱的形状,绘出幅频特性曲线,改变f,使f分别等于0.4375,0.5625,观察这两种情况下频谱的形状和谱峰的出现位置,有无混叠和泄漏现象?

说明产生现象的原因。

代码:

n=0:

15;

a=0.1;

%f=0.0625

f=0.0625;

x=exp(-a.*n).*sin(2*pi.*f.*n);

y=abs(fft(x));

subplot(3,2,1);

stem(n,x);

xlabel('n');

ylabel('Xb');

title('a=0.1;f=0.0625;时域特性');

subplot(3,2,2);

stem(n,y)

xlabel('w');

ylabel('h');

title('a=0.1;f=0.0625;频域特性');

%f=0.4375

f=0.4375;

x=exp(-a.*n).*sin(2*pi.*f.*n);

y=abs(fft(x));

subplot(3,2,3);

stem(n,x);

xlabel('n');

ylabel('Xb');

title('a=0.1;f=0.4375;时域特性');

subplot(3,2,4);

stem(n,y)

xlabel('w');

ylabel('h');

title('a=0.1;f=0.4375;频域特性');

%f=0.5625

f=0.5625;

x=exp(-a.*n).*sin(2*pi.*f.*n);

y=abs(fft(x));

subplot(3,2,5);

stem(n,x);

xlabel('n');

ylabel('Xb');

title('a=0.1;f=0.5625;时域特性');

subplot(3,2,6);

stem(n,y)

xlabel('w');

ylabel('h');

title('a=0.1;f=0.5625;频域特性');

运行结果:

分析:

f=0.4375时出现泄漏,原因:

加窗截断得过短;

f=0.5625时出现混叠和泄露,原因:

采样频率过低,加窗截断过短。

3.观察三角波和反三角波的时域频域特性,用N=8点FFT分析时域频域特性,观察两者的序列形状和频谱曲线有何异同?

在末尾补零,用N=32代入,观察发生的变化?

两种情况下频谱有相同之处吗?

说明了什么?

代码:

%三角波

N=8;

fori=1:

N

ifi<5

Xb(i)=i-1;

else

Xb(i)=8-i+1;

end

end

n=0:

N-1;

subplot(4,2,1);

stem(n,Xb);

xlabel('n');

ylabel('Xb');

title('三角波时域特性');

subplot(4,2,3);

Xk=fft(Xb,8);

n=0:

N-1;

stem(n,abs(Xk));

title('8点频域特性');

xlabel('w');

ylabel('Xk');

N=8;

fori=1:

N

ifi<5

Xb(i)=i-1;

else

ifi<9

Xb(i)=8-i+1;

else

Xb(i)=0;

end

end

end

Xk=fft(Xb,32);

n=0:

31;

subplot(4,2,4);

stem(n,abs(Xk));

title('32点频域特性');

xlabel('w');

ylabel('Xk');

%反三角波

N=8;

fori=1:

N

ifi<5

Xb(i)=5-i;

else

Xb(i)=i-5;

end

end

n=0:

N-1;

subplot(4,2,5);

stem(n,Xb);

xlabel('n');

ylabel('Xb');

title('反三角波时域特性');

subplot(4,2,7);

Xk=fft(Xb,8);

n=0:

N-1;

stem(n,abs(Xk));

title('8点频域特性');

xlabel('w');

ylabel('Xk');

N=8;

fori=1:

N

ifi<5

Xb(i)=5-i;

else

ifi<9

Xb(i)=i-5;

else

Xb(i)=0;

end

end

end

Xk=fft(Xb,32);

n=0:

31;

subplot(4,2,8);

stem(n,abs(Xk));

title('32点频域特性');

xlabel('w');

ylabel('Xk');

运行结果:

分析:

N=8时,由于采样点过少,出现栅栏效应,部分点被遮住;

对三角波影响不大,对反三角波影响很大,N=8时,很多重要频谱信息遗失。

适当补零可减少栅栏效应。

4.一个连续信号含两个频率分量,经采样得

X(n)=sin(2

)+cos(2

)n=0,1,……N-1

已知N=16,

分别为1/16,1/64,观察期频谱;当N=128,

,其结果有何不同?

为什么?

代码:

%N=16

N=16;

f=1/16;

fori=1:

N

Xb(i)=sin(2*pi*0.125*(i-1))+cos(2*pi*(0.125+f)*(i-1));

end

Xk=fft(Xb,16);

n=0:

15;

subplot(2,2,1);

stem(n,abs(Xk));

title('16点频域特性,1/16');

xlabel('w');

ylabel('Xk');

N=16;

f=1/64;

fori=1:

N

Xb(i)=sin(2*pi*0.125*(i-1))+cos(2*pi*(0.125+f)*(i-1));

end

Xk=fft(Xb,16);

n=0:

15;

subplot(2,2,2);

stem(n,abs(Xk));

title('16点频域特性,1/64');

xlabel('w');

ylabel('Xk');

%N=128

N=128;

f=1/16;

fori=1:

N

Xb(i)=sin(2*pi*0.125*(i-1))+cos(2*pi*(0.125+f)*(i-1));

end

Xk=fft(Xb,128);

n=0:

127;

subplot(2,2,3);

stem(n,abs(Xk));

title('128点频域特性,1/16');

xlabel('w');

ylabel('Xk');

N=128;

f=1/64;

fori=1:

N

Xb(i)=sin(2*pi*0.125*(i-1))+cos(2*pi*(0.125+f)*(i-1));

end

Xk=fft(Xb,128);

n=0:

127;

subplot(2,2,4);

stem(n,abs(Xk));

title('128点频域特性,1/64');

xlabel('w');

ylabel('Xk');

运行结果:

分析:

=1/16,N=16,N=64采样频谱均正确;

=1/64,N=16时采样频率过低,无法区分辩频率相差很小的两个信号,

N=64时采样频谱正确;频谱如实地反映了信号的特性。

5.用FFt计算Xa(n)(p=8,q=2)和Xb(n)(a=0.1,f=0.0625)的16点循环卷积和线性卷积。

代码:

p=8;

q=2;N=16;

fori=1:

N

Xa(i)=exp(-((i-1-p)^2)/q);

end

a=0.1;

f=0.0625;

fori=1:

N

Xb(i)=exp(-a.*i).*sin(2.*pi.*f.*i);

end

Xk=fft(Xa,16);

Yk=fft(Xb,16);

rm=real(ifft(Xk.*Yk));

m=0:

N-1;

subplot(1,2,1);

stem(m,rm);

xlabel('m');

ylabel('rm');

title('循环卷积');

Xk=fft(Xa,32);

Yk=fft(Xb,32);

rm=real(ifft(Xk.*Yk));

m=0:

30;

subplot(1,2,2);

stem(m,rm(1:

31));

xlabel('m');

ylabel('rm');

title('线性卷积');

运行结果:

6.产生一个512点的随机序列Xe(n),并用Xc(n)和Xe(n)线性卷积,观察卷积前后Xe(n)频谱的变化。

要求将Xe(n)分成8段,分别采用重叠相加法和重叠保留法。

重叠相加法:

代码:

Xe=randn(1,512);

output(1:

700)=0;

temp2(1:

71)=0;

temp1(1:

71)=0;

N=8;

fori=1:

N

ifi<5

Xb(i)=i-1;

else

Xb(i)=8-i+1;

end

end

Xbk=fft(Xb,71);

forj=1:

8

fork=1:

71

ifk<65

temp2(k)=Xe(k+64.*(j-1));

else

temp2(k)=0;

end

end

tempk=fft(temp2,71);

temp2=real(ifft(tempk.*Xbk));

output((64*(j-1)+1):

64*j)=[temp1(8:

64),temp1(65:

71)+temp2(1:

7)];

temp1=temp2;

ifj==8

output((64*j+1):

64*(j+1))=temp1(8:

71);

end

end

output1(1:

519)=output(58:

576);

m=0:

518;

Xek=fft(Xe,519);

outputk=fft(output1,519);

subplot(2,1,1);stem(m,Xek(1:

519),'.');title('before');

subplot(2,1,2);stem(m,outputk(1:

519),'.');title('after');

运行结果:

重叠保留法:

代码:

Xe=randn(1,512);

output(1:

700)=0;

temp2(1:

71)=0;

temp1(1:

71)=0;

N=8;

fori=1:

N

ifi<5

Xb(i)=i-1;

else

Xb(i)=8-i+1;

end

end

Xbk=fft(Xb,71);

forj=1:

8

fork=1:

71

ifk<8

ifj==1

temp2(k)=0;

else

temp2(k)=Xe(k+64.*(j-1)-8);

end

else

ifj==9

temp2(k)=0;

else

temp2(k)=Xe(k-7+64.*(j-1));

end

end

end

tempk=fft(temp2,71);

temp2=real(ifft(tempk.*Xbk));

output((64*(j-1)+1):

64*j)=[temp2(8:

71)];

end

output1(1:

519)=output(1:

519);

m=0:

518;

Xek=fft(Xe,519);

outputk=fft(output1,519);plot(m,Xek(1:

519))

subplot(2,1,1);stem(m,Xek(1:

519),'.');title('before');

subplot(2,1,2);stem(m,outputk(1:

519),'.');title('after')

运行结果:

7.用FFt计算Xa(n)(p=8,q=2)和Xb(n)(a=0.1,f=0.0625)的16点循环相关和线性相关,它们之间有何异同?

代码:

p=8;

q=2;

N=16;

fori=1:

N

Xa(i)=exp(-((i-1-p)^2)/q);

end

a=0.1;

f=0.0625;

fori=1:

N

Xb(i)=exp(-a.*i).*sin(2.*pi.*f.*i);

end

Xak=fft(Xa,N);

Xbk=fft(Xb,N);

rm=real(ifft(conj(Xak).*Xbk));

m=0:

N-1;

subplot(2,2,1);

stem(m,rm);

title('循环相关x在前');

rm=real(ifft(conj(Xbk).*Xak));

m=0:

N-1;

subplot(2,2,2);

stem(m,rm);

title('循环相关y在前');

Xak=fft(Xa,2*N);

Xbk=fft(Xb,2*N);

rm=real(ifft(conj(Xak).*Xbk));

rm=[rm((N+2):

2*N),rm(1:

N)];

m=-N+1:

N-1;

subplot(2,2,3);

stem(m,rm);

title('线性相关x在前');

rm=real(ifft(conj(Xbk).*Xak));

rm=[rm((N+2):

2*N),rm(1:

N)];

m=-N+1:

N-1;

subplot(2,2,4);

stem(m,rm);

title('线性相关y在前');

运行结果:

分析:

共有四种结果:

x在前与y在前结果左右颠倒;线性相关有部分零值区间。

8.用FFt计算Xa(n)(p=8,q=2)和Xb(n)(a=0.1,f=0.0625)的自相关函数。

代码:

p=8;

q=2;

N=16;

fori=1:

N

Xa(i)=exp(-((i-1-p)^2)/q);

end

a=0.1;

f=0.0625;

fori=1:

N

Xb(i)=exp(-a.*i).*sin(2.*pi.*f.*i);

end

Xak=fft(Xa,2*N);

Xbk=fft(Xb,2*N);

rm=real(ifft(conj(Xak).*Xak));

rm=[rm((N+2):

2*N),rm(1:

N)];

m=-N+1:

N-1;

subplot(1,2,1);

stem(m,rm);

title('Xa线性自相关');

p=8;

q=2;

N=16;

fori=1:

N

Xa(i)=exp(-((i-1-p)^2)/q);

end

a=0.1;

f=0.0625;

fori=1:

N

Xb(i)=exp(-a.*i).*sin(2.*pi.*f.*i);

end

Xak=fft(Xa,2*N);

Xbk=fft(Xb,2*N);

rm=real(ifft(conj(Xbk).*Xbk));

rm=[rm((N+2):

2*N),rm(1:

N)];

m=-N+1:

N-1;

subplot(1,2,2);

stem(m,rm);

title('Xb线性自相关');

运行结果:

 

思考题

1.实验中的信号序列Xc(n)、Xd(n),在单位圆上的z变换频谱会相同吗?

如果不同,说明那一个低频分量会多一点,为什么?

不同,三角波的低频分量多。

三角波在时域上信号没有突变,低频分量较多;

反三角波在n=0和n=7时有突变,因此其高频分量较多。

2.对一个有限长序列进行DFT等价于该序列周期延拓后进行DFS运算,因为DFS只是取其中一个周期进行计算,所以FFT在一定条件下也可以用以分析周期信号序列。

如果实正弦信号sin(2

n),f=0.1用16点FFt来做DFS运算,得到的频谱是其本身的的真实谱吗?

为什么?

不是。

f=0.1时,DFS运算在一个周期内应取10个频率点进行计算。

此时的FFT取16个点进行计算取出了一个周期内的10个点,但同时多取了6个有效点进行计算。

频谱不再正确。

应该取10个点,其余6个补零。

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

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

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

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