实验二 快速傅里叶变换(FFT)及其应用

《数字信号处理》课程

(2010-2011学年第1学期 ) 成绩:

实验二 快速傅里叶变换(FFT)及其应用

学生姓名:闫春遐

所在院系:电子信息工程学院自动化系

年级专业:2008级自动化系

学 号:00824049

指导教师:王亮

完成日期:2010年9月27日

实验二 快速傅里叶变换(FFT)及其应用

一、实验目的

(1)在理论学习的基础上,通过本实验,加深对FFT的理解,熟悉MATLAB中的有关函数。

(2)应用FFT对典型信号进行频谱分析。

(3)了解应用FFT进行信号频谱分析过程可能出现的问题,以便在实际中正确应用FFT。

(4)应用FFT实现序列的线性卷积和相关。

二、实验内容

实验中用到的信号序列: a)高斯序列

⎧-(n-p)⎪q

xa(n)=⎨e

⎪⎩0

2

0≤n≤15

其他

b)衰减正弦序列

⎧e-ansin(2πfn)0≤n≤15

xb(n)=⎨

0其他⎩

c)三角波序列

0≤n≤3⎧n

xc(n)=⎨8-n4≤n≤7

⎪0其他⎩

d)反三角波序列

⎧4-n0≤n≤3⎪

xd(n)=⎨n-44≤n≤7

⎪0其他⎩

上机实验内容:

(1)观察高斯序列的时域和幅频特性,固定信号xa(n)中参数p=8,改变q的值,使q分别等于2、4、8,观察他们的时域和幅频特性,了解当q取不同值时,对信号的时域和幅频特性的影响;固定q=8,改变p,使p分别等于8、13、

14,观察参数p变化对信号序列的时域及幅频特性的影响,注意p等于多少时,会发生明显的泄漏现象,混叠是否也随之出现?记录实验中观察到的现象,绘出相应的时域序列和幅频特性曲线。

解答: >> n=0:1:15;

>> xn=exp(-(n-8).^2/2);

>> subplot(1,2,1);stem(n,xn);xlabel('t/T');ylabel('x(n)'); >> xk1=fft(xn);xk1=abs(xk1);

>> subplot(1,2,2);stem(n,xk1);xlabel('k');ylabel('X(k)');

>> xn=exp(-(n-8).^2/4);

>> subplot(1,2,1);stem(n,xn);xlabel('t/T');ylabel('x(n)'); >> xk1=fft(xn);xk1=abs(xk1);

>> subplot(1,2,2);stem(n,xk1);xlabel('k');ylabel('X(k)');

>> xn=exp(-(n-8).^2/8);

>> subplot(1,2,1);stem(n,xn);xlabel('t/T');ylabel('x(n)'); >> xk1=fft(xn);xk1=abs(xk1);

>> subplot(1,2,2);stem(n,xk1);xlabel('k');ylabel('X(k)');

>> xn=exp(-(n-13).^2/8);

>> subplot(1,2,1);stem(n,xn);xlabel('t/T');ylabel('x(n)'); >> xk1=fft(xn);xk1=abs(xk1);

>> subplot(1,2,2);stem(n,xk1);xlabel('k');ylabel('X(k)');

>> xn=exp(-(n-14).^2/8);

>> subplot(1,2,1);stem(n,xn);xlabel('t/T');ylabel('x(n)'); >> xk1=fft(xn);xk1=abs(xk1);

>> subplot(1,2,2);stem(n,xk1);xlabel('k');ylabel('X(k)');

随着q值的增大,时域信号幅值变化缓慢,频域信号频谱泄露程度减小。 随着p的增大,时域信号幅值不变,会在时间轴移位。

(2)观察衰减正弦序列xb(n)的时域和幅频特性,a=0.1,f=0.0625,检查普峰出现的位置是否正确,注意频谱的形状,绘出幅频特性曲线,改变f,使

f分别等于0.4375和0.5625,观察这两种情况下,频谱的形状和普峰出现的位

置,有无混叠和泄漏现象?说明产生现象的原因。

解答: >> n=0:1:15;

>> xn=exp(-0.1*n).*sin(2*pi*0.0625*n);

>> subplot(1,2,1);stem(n,xn);xlabel('t/T');ylabel('x(n)'); >> xk1=fft(xn);xk1=abs(xk1);

>> subplot(1,2,2);stem(n,xk1);xlabel('k');ylabel('X(k)');

>> xn=exp(-0.1*n).*sin(2*pi*0.4375*n);

>> subplot(1,2,1);stem(n,xn);xlabel('t/T');ylabel('x(n)'); >> xk1=fft(xn);xk1=abs(xk1);

>> subplot(1,2,2);stem(n,xk1);xlabel('k');ylabel('X(k)');

>> xn=exp(-0.1*n).*sin(2*pi*0.5625*n);

>> subplot(1,2,1);stem(n,xn);xlabel('t/T');ylabel('x(n)'); >> xk1=fft(xn);xk1=abs(xk1);

>> subplot(1,2,2);stem(n,xk1);xlabel('k');ylabel('X(k)');

(3)观察三角波和反三角波的时域和幅频特性,用N=8点FFT分析信号序列xc(n)和xd(n)的幅频特性,观察两者的序列形状和频谱曲线有什么异同?绘出两序列及其幅频特性曲线。

在xc(n)和xd(n)末尾补零,用N=32点FFT分析这两个信号的幅频特性,观察幅频特性发生了什么变化?两种情况下的FFT频谱还有相同之处吗?这些变

化说明了什么?

解答: >> for n=0:1:3 xcn(n+1)=n; end;

>> for n=4:1:7 xcn(n+1)=8-n; end; >> xcn xcn =

0 1 2 3 4 3 2 1

>> n=0:1:7;

>> subplot(1,2,1);stem(n,xcn);xlabel('t/T');ylabel('x(n)'); >> xk1=fft(xcn);xk1=abs(xk1);

>> subplot(1,2,2);stem(n,xk1);xlabel('k');ylabel('X(k)');

>> for n=0:1:3 xdn(n+1)=4-n; end;

>> for n=4:1:7 xdn(n+1)=n-4; end; >> xdn xdn =

4 3 2 1 0 1 2 3

>> n=0:1:7;

>> subplot(1,2,1);stem(n,xdn);xlabel('t/T');ylabel('x(n)'); >> xk1=fft(xdn);xk1=abs(xk1);

>> subplot(1,2,2);stem(n,xk1);xlabel('k');ylabel('X(k)');

>> xcn=[xcn,zeros(1,24)]; >> n=0:1:31;

>> subplot(1,2,1);stem(n,xcn);xlabel('t/T');ylabel('x(n)'); >> xk1=fft(xcn);xk1=abs(xk1);

>> subplot(1,2,2);stem(n,xk1);xlabel('k');ylabel('X(k)');

>> xdn=[xdn,zeros(1,24)]; >> n=0:1:31;

>> subplot(1,2,1);stem(n,xdn);xlabel('t/T');ylabel('x(n)'); >> xk1=fft(xdn);xk1=abs(xk1);

>> subplot(1,2,2);stem(n,xk1);xlabel('k');ylabel('X(k)');

N=8时,xc(n)和xd(n)的幅频特性相同,在xc(n)和xd(n)末尾补零,用N=32点FFT分析这两个信号的幅频特性时,它们还有相同之处,即当k取4的

整数倍时对应幅值相等。

分析:

N=8点FFT分析信号的幅频特性:XN(k1)=∑x(n)*e

n=0N-1

j(2π)nk1N

N=32点FFT分析信号的幅频特性:

4N-1

X4N(k2)=

∑x(n)*e

n=0

j(

)nk24N

=∑x(n)*e

n=0

N-1

j(

)nk24N

由上两式可知,当k2=4k1时,两个信号的对应频率幅值相等,即对信号末尾补零加长整数个周期可以对原信号达到细化频谱的作用。

(4)一个连续时间信号含两个频率分量,经采样得

x(n)=sin[2π 0.125n]+cos[2π (0.125+∆f)n]n=0,1,⋅⋅⋅,N-1

已知N=16,∆f分别为1/16和1/64,观察其频谱;当N=128时,∆f不变,其结果有何不同,为什么?

解答: >> n=0:1:15;

>> x1n=sin(2*pi*0.125*n)+cos(2*pi*(0.125+1/16)*n); >> xk1=fft(x1n);xk1=abs(xk1);

>>subplot(1,2,1);stem(n,xk1);xlabel('k');ylabel('X(k)');legend('f=1/16');

>> x2n=sin(2*pi*0.125*n)+cos(2*pi*(0.125+1/64)*n); >> xk2=fft(x2n);xk2=abs(xk2);

>>subplot(1,2,2);stem(n,xk2);xlabel('k');ylabel('X(k)');legend('f

=1/64');

>> n=0:1:127;

>> x1n=sin(2*pi*0.125*n)+cos(2*pi*(0.125+1/16)*n); >> xk1=fft(x1n);xk1=abs(xk1);

>> stem(n,xk1);xlabel('k');ylabel('X(k)');legend('f=1/16');

>> x2n=sin(2*pi*0.125*n)+cos(2*pi*(0.125+1/64)*n); >> xk2=fft(x2n);xk2=abs(xk2);

>> stem(n,xk2);xlabel('k');ylabel('X(k)');legend('f=1/64');

分析:

由于离散傅里叶变换的选频性质:

x(n)=ejqwon

wo=2π/N

⎧N1-ej2π(q-k)

X(k)=DFT[x(n)]==⎨

1-ej2π(q-k)/N⎩0

q=k

q≠k

当q不等于整数时,则信号频谱会发生泄漏。

(5)用FFT分别计算xa(n)(p=8,q=2)和xb(n)(a=0.1,f=0.0625)的16点循环卷积和线性卷积。

解答: >> n=0:1:15;

>> xan=exp(-(n-8).^2/2);

>> xbn=exp(-0.1*n).*sin(2*pi*0.0625*n);

>> subplot(4,1,1);stem(n,xan);xlabel('n');ylabel('xa(n)'); >> subplot(4,1,2);stem(n,xbn);xlabel('n');ylabel('xb(n)'); >> xak=fft(xan);xbk=fft(xbn);x1k=xak.*xbk; >> x1n=ifft(x1k);

>>subplot(4,1,3);stem(n,x1n);xlabel('n');ylabel('x1(n)');legend('循环卷积');

>> x2n=conv(xan,xbn); >> m=0:1:length(x2n)-1;

>>subplot(4,1,4);stem(m,x2n);xlabel('n');ylabel('x2(n)');legend('线性卷积

');

(6)产生一512点的随机序列xe(n),并用xc(n)和xe(n)做线性卷积,观察卷积前后xe(n)频谱的变化。要求将xe(n)分成8段,分别采用重叠相加法和重叠保留法。

解答:

在编辑调试窗中编写程序: function yy=xeni(N2,xen,i) for n=N2*i:1:N2*(i+1)-1 xeni(n-N2*i+1)=xen(n+1); end yy=xeni;

将上述文件存盘,文件名为xeni.m。

function yy=xenni(N1,N2,xen,i) for n=N2*i:1:N1+N2*(i+1)-2 xeni(n-N2*i+1)=xen(n+1); end yy=xeni;

将上述文件存盘,文件名为xenni.m。

function t=shiftmm(a,n) m=length(n); for i=1:1:a;

for j=m+i-1:-1:1 n(j+1)=n(j); end; end; for i=1:1:a n(i)=0; end; t=n;

将上述文件存盘,文件名为shiftmm.m。 退回到指令窗:

>> xcn=[0 1 2 3 4 3 2 1];xen=rand(1,512);

>> qqqqq=conv(xcn,xen);

>> stem([0:1:518],qqqqq);xlabel('n');ylabel('幅度

');

>> N1=length(xcn);N2=length(xen)/8; >> xcn=[xcn zeros(1,N2-1)]; >> xck=fft(xcn); >> for i=1:1:8

xenii=xeni(N2,xen,i-1); xenii=[xenii zeros(1,N1-1)]; xeki=fft(xenii); yki=xck.*xeki; yni=ifft(yki); y(i,:)=yni; end;

>> for i=0:1:7 for j=0:1:i*N2-1

ynii(i+1,[0+1:1:i*N2-1+1])=0; end;

for j=i*N2:1:N1+(i+1)*N2-2

ynii(i+1,[i*N2+1:1:N1+(i+1)*N2-2+1])=y(i+1,:); end;

for j=N1+(i+1)*N2-1:1:N1+8*N2-2

ynii(i+1,[N1+(i+1)*N2-1+1:1:N1+8*N2-2+1])=0; end;

end;

>> yn=zeros(1,N1+8*N2-1); >> for i=1:1:8 yn=yn+ynii(i,:); end;

>> n=0:1:N1+8*N2-2;

>> stem(n,yn);xlabel('n');ylabel('幅度');legend('重叠相加法

');

>> xen21=shiftmm(N1-1,xen); >> for i=1:1:8

xen2i(i,:)=xenni(N1,N2,xen21,i-1); end;

>> for i=1:1:8 xek2i=fft(xen2i(i,:)); yk2i=xck.*xek2i; yn2i=ifft(yk2i); y2(i,:)=yn2i;; end;

>> y2(:,1:N1-1)=[;;;;;;;;]; >> n2=0:1:8*N2-1;

>> stem(n2,[y2(1,:) y2(2,:) y2(3,:) y2(4,:) y2(5,:) y2(6,:) y2(7,:) y2(8,:)]);xlabel('n');ylabel('幅度');legend('重叠保留法');

(7)用FFT分别计算xa(n)(p=8,q=2)和xb(n)(a=0.1,f=0.0625)的16点循环相关和线性相关,问一共有多少种结果,它们之间有何异同点。

解答: 1)求线性相关 >> n=0:1:15;

>> xan=exp(-(n-8).^2/2);

>> xbn=exp(-0.1*n).*sin(2*pi*0.0625*n); >> k=length(xbn);

>> xan1=[xan zeros(1,k-1)]; >> xbn1=[xbn zeros(1,k-1)]; >> xak=fft(xan1); >> xbk=fft(xbn1);

>> rm=real(ifft(conj(xak).*xbk)); >> rm1=[rm(k+1:2*k-1) rm(1:k)]; >> m=(-k+1):(k-1);

>> stem(m,rm1);xlabel('n');ylabel('幅度');legend('线性相关');

2)求循环相关 >> n=0:1:15;

>> xan=exp(-(n-8).^2/2);

>> xbn=exp(-0.1*n).*sin(2*pi*0.0625*n); >> k=length(xbn); >> xak=fft(xan); >> xbk=fft(xbn);

>> rm=real(ifft(conj(xak).*xbk));

>> stem(n,rm);xlabel('n');ylabel('幅度');legend('循环相关

');

(8)用FFT分别计算xa(n)(p=8,q=2)和xb(n)(a=0.1,f=0.0625)的自相关函数。

解答: >> n=0:1:15;

>> xan=exp(-(n-8).^2/2); >> k=length(xan); >> xak=fft(xan,2*k);

>> rm=real(ifft(conj(xak).*xak)); >> rm=[rm(k+2:2*k) rm(1:k)]; >> m=(-k+1):(k-1);

>> stem(m,rm);xlabel('m');ylabel('幅度

');

(2) >> n=0:1:15;

>> xbn=exp(-0.1*n).*sin(2*pi*0.0625*n); >> k=length(xbn); >> xbk=fft(xbn,2*k);

>> rm=real(ifft(conj(xbk).*xbk)); >> rm=[rm(k+2:2*k) rm(1:k)]; >> m=(-k+1):(k-1);

>> stem(m,rm);xlabel('m');ylabel('幅度

');

《数字信号处理》课程

(2010-2011学年第1学期 ) 成绩:

实验二 快速傅里叶变换(FFT)及其应用

学生姓名:闫春遐

所在院系:电子信息工程学院自动化系

年级专业:2008级自动化系

学 号:00824049

指导教师:王亮

完成日期:2010年9月27日

实验二 快速傅里叶变换(FFT)及其应用

一、实验目的

(1)在理论学习的基础上,通过本实验,加深对FFT的理解,熟悉MATLAB中的有关函数。

(2)应用FFT对典型信号进行频谱分析。

(3)了解应用FFT进行信号频谱分析过程可能出现的问题,以便在实际中正确应用FFT。

(4)应用FFT实现序列的线性卷积和相关。

二、实验内容

实验中用到的信号序列: a)高斯序列

⎧-(n-p)⎪q

xa(n)=⎨e

⎪⎩0

2

0≤n≤15

其他

b)衰减正弦序列

⎧e-ansin(2πfn)0≤n≤15

xb(n)=⎨

0其他⎩

c)三角波序列

0≤n≤3⎧n

xc(n)=⎨8-n4≤n≤7

⎪0其他⎩

d)反三角波序列

⎧4-n0≤n≤3⎪

xd(n)=⎨n-44≤n≤7

⎪0其他⎩

上机实验内容:

(1)观察高斯序列的时域和幅频特性,固定信号xa(n)中参数p=8,改变q的值,使q分别等于2、4、8,观察他们的时域和幅频特性,了解当q取不同值时,对信号的时域和幅频特性的影响;固定q=8,改变p,使p分别等于8、13、

14,观察参数p变化对信号序列的时域及幅频特性的影响,注意p等于多少时,会发生明显的泄漏现象,混叠是否也随之出现?记录实验中观察到的现象,绘出相应的时域序列和幅频特性曲线。

解答: >> n=0:1:15;

>> xn=exp(-(n-8).^2/2);

>> subplot(1,2,1);stem(n,xn);xlabel('t/T');ylabel('x(n)'); >> xk1=fft(xn);xk1=abs(xk1);

>> subplot(1,2,2);stem(n,xk1);xlabel('k');ylabel('X(k)');

>> xn=exp(-(n-8).^2/4);

>> subplot(1,2,1);stem(n,xn);xlabel('t/T');ylabel('x(n)'); >> xk1=fft(xn);xk1=abs(xk1);

>> subplot(1,2,2);stem(n,xk1);xlabel('k');ylabel('X(k)');

>> xn=exp(-(n-8).^2/8);

>> subplot(1,2,1);stem(n,xn);xlabel('t/T');ylabel('x(n)'); >> xk1=fft(xn);xk1=abs(xk1);

>> subplot(1,2,2);stem(n,xk1);xlabel('k');ylabel('X(k)');

>> xn=exp(-(n-13).^2/8);

>> subplot(1,2,1);stem(n,xn);xlabel('t/T');ylabel('x(n)'); >> xk1=fft(xn);xk1=abs(xk1);

>> subplot(1,2,2);stem(n,xk1);xlabel('k');ylabel('X(k)');

>> xn=exp(-(n-14).^2/8);

>> subplot(1,2,1);stem(n,xn);xlabel('t/T');ylabel('x(n)'); >> xk1=fft(xn);xk1=abs(xk1);

>> subplot(1,2,2);stem(n,xk1);xlabel('k');ylabel('X(k)');

随着q值的增大,时域信号幅值变化缓慢,频域信号频谱泄露程度减小。 随着p的增大,时域信号幅值不变,会在时间轴移位。

(2)观察衰减正弦序列xb(n)的时域和幅频特性,a=0.1,f=0.0625,检查普峰出现的位置是否正确,注意频谱的形状,绘出幅频特性曲线,改变f,使

f分别等于0.4375和0.5625,观察这两种情况下,频谱的形状和普峰出现的位

置,有无混叠和泄漏现象?说明产生现象的原因。

解答: >> n=0:1:15;

>> xn=exp(-0.1*n).*sin(2*pi*0.0625*n);

>> subplot(1,2,1);stem(n,xn);xlabel('t/T');ylabel('x(n)'); >> xk1=fft(xn);xk1=abs(xk1);

>> subplot(1,2,2);stem(n,xk1);xlabel('k');ylabel('X(k)');

>> xn=exp(-0.1*n).*sin(2*pi*0.4375*n);

>> subplot(1,2,1);stem(n,xn);xlabel('t/T');ylabel('x(n)'); >> xk1=fft(xn);xk1=abs(xk1);

>> subplot(1,2,2);stem(n,xk1);xlabel('k');ylabel('X(k)');

>> xn=exp(-0.1*n).*sin(2*pi*0.5625*n);

>> subplot(1,2,1);stem(n,xn);xlabel('t/T');ylabel('x(n)'); >> xk1=fft(xn);xk1=abs(xk1);

>> subplot(1,2,2);stem(n,xk1);xlabel('k');ylabel('X(k)');

(3)观察三角波和反三角波的时域和幅频特性,用N=8点FFT分析信号序列xc(n)和xd(n)的幅频特性,观察两者的序列形状和频谱曲线有什么异同?绘出两序列及其幅频特性曲线。

在xc(n)和xd(n)末尾补零,用N=32点FFT分析这两个信号的幅频特性,观察幅频特性发生了什么变化?两种情况下的FFT频谱还有相同之处吗?这些变

化说明了什么?

解答: >> for n=0:1:3 xcn(n+1)=n; end;

>> for n=4:1:7 xcn(n+1)=8-n; end; >> xcn xcn =

0 1 2 3 4 3 2 1

>> n=0:1:7;

>> subplot(1,2,1);stem(n,xcn);xlabel('t/T');ylabel('x(n)'); >> xk1=fft(xcn);xk1=abs(xk1);

>> subplot(1,2,2);stem(n,xk1);xlabel('k');ylabel('X(k)');

>> for n=0:1:3 xdn(n+1)=4-n; end;

>> for n=4:1:7 xdn(n+1)=n-4; end; >> xdn xdn =

4 3 2 1 0 1 2 3

>> n=0:1:7;

>> subplot(1,2,1);stem(n,xdn);xlabel('t/T');ylabel('x(n)'); >> xk1=fft(xdn);xk1=abs(xk1);

>> subplot(1,2,2);stem(n,xk1);xlabel('k');ylabel('X(k)');

>> xcn=[xcn,zeros(1,24)]; >> n=0:1:31;

>> subplot(1,2,1);stem(n,xcn);xlabel('t/T');ylabel('x(n)'); >> xk1=fft(xcn);xk1=abs(xk1);

>> subplot(1,2,2);stem(n,xk1);xlabel('k');ylabel('X(k)');

>> xdn=[xdn,zeros(1,24)]; >> n=0:1:31;

>> subplot(1,2,1);stem(n,xdn);xlabel('t/T');ylabel('x(n)'); >> xk1=fft(xdn);xk1=abs(xk1);

>> subplot(1,2,2);stem(n,xk1);xlabel('k');ylabel('X(k)');

N=8时,xc(n)和xd(n)的幅频特性相同,在xc(n)和xd(n)末尾补零,用N=32点FFT分析这两个信号的幅频特性时,它们还有相同之处,即当k取4的

整数倍时对应幅值相等。

分析:

N=8点FFT分析信号的幅频特性:XN(k1)=∑x(n)*e

n=0N-1

j(2π)nk1N

N=32点FFT分析信号的幅频特性:

4N-1

X4N(k2)=

∑x(n)*e

n=0

j(

)nk24N

=∑x(n)*e

n=0

N-1

j(

)nk24N

由上两式可知,当k2=4k1时,两个信号的对应频率幅值相等,即对信号末尾补零加长整数个周期可以对原信号达到细化频谱的作用。

(4)一个连续时间信号含两个频率分量,经采样得

x(n)=sin[2π 0.125n]+cos[2π (0.125+∆f)n]n=0,1,⋅⋅⋅,N-1

已知N=16,∆f分别为1/16和1/64,观察其频谱;当N=128时,∆f不变,其结果有何不同,为什么?

解答: >> n=0:1:15;

>> x1n=sin(2*pi*0.125*n)+cos(2*pi*(0.125+1/16)*n); >> xk1=fft(x1n);xk1=abs(xk1);

>>subplot(1,2,1);stem(n,xk1);xlabel('k');ylabel('X(k)');legend('f=1/16');

>> x2n=sin(2*pi*0.125*n)+cos(2*pi*(0.125+1/64)*n); >> xk2=fft(x2n);xk2=abs(xk2);

>>subplot(1,2,2);stem(n,xk2);xlabel('k');ylabel('X(k)');legend('f

=1/64');

>> n=0:1:127;

>> x1n=sin(2*pi*0.125*n)+cos(2*pi*(0.125+1/16)*n); >> xk1=fft(x1n);xk1=abs(xk1);

>> stem(n,xk1);xlabel('k');ylabel('X(k)');legend('f=1/16');

>> x2n=sin(2*pi*0.125*n)+cos(2*pi*(0.125+1/64)*n); >> xk2=fft(x2n);xk2=abs(xk2);

>> stem(n,xk2);xlabel('k');ylabel('X(k)');legend('f=1/64');

分析:

由于离散傅里叶变换的选频性质:

x(n)=ejqwon

wo=2π/N

⎧N1-ej2π(q-k)

X(k)=DFT[x(n)]==⎨

1-ej2π(q-k)/N⎩0

q=k

q≠k

当q不等于整数时,则信号频谱会发生泄漏。

(5)用FFT分别计算xa(n)(p=8,q=2)和xb(n)(a=0.1,f=0.0625)的16点循环卷积和线性卷积。

解答: >> n=0:1:15;

>> xan=exp(-(n-8).^2/2);

>> xbn=exp(-0.1*n).*sin(2*pi*0.0625*n);

>> subplot(4,1,1);stem(n,xan);xlabel('n');ylabel('xa(n)'); >> subplot(4,1,2);stem(n,xbn);xlabel('n');ylabel('xb(n)'); >> xak=fft(xan);xbk=fft(xbn);x1k=xak.*xbk; >> x1n=ifft(x1k);

>>subplot(4,1,3);stem(n,x1n);xlabel('n');ylabel('x1(n)');legend('循环卷积');

>> x2n=conv(xan,xbn); >> m=0:1:length(x2n)-1;

>>subplot(4,1,4);stem(m,x2n);xlabel('n');ylabel('x2(n)');legend('线性卷积

');

(6)产生一512点的随机序列xe(n),并用xc(n)和xe(n)做线性卷积,观察卷积前后xe(n)频谱的变化。要求将xe(n)分成8段,分别采用重叠相加法和重叠保留法。

解答:

在编辑调试窗中编写程序: function yy=xeni(N2,xen,i) for n=N2*i:1:N2*(i+1)-1 xeni(n-N2*i+1)=xen(n+1); end yy=xeni;

将上述文件存盘,文件名为xeni.m。

function yy=xenni(N1,N2,xen,i) for n=N2*i:1:N1+N2*(i+1)-2 xeni(n-N2*i+1)=xen(n+1); end yy=xeni;

将上述文件存盘,文件名为xenni.m。

function t=shiftmm(a,n) m=length(n); for i=1:1:a;

for j=m+i-1:-1:1 n(j+1)=n(j); end; end; for i=1:1:a n(i)=0; end; t=n;

将上述文件存盘,文件名为shiftmm.m。 退回到指令窗:

>> xcn=[0 1 2 3 4 3 2 1];xen=rand(1,512);

>> qqqqq=conv(xcn,xen);

>> stem([0:1:518],qqqqq);xlabel('n');ylabel('幅度

');

>> N1=length(xcn);N2=length(xen)/8; >> xcn=[xcn zeros(1,N2-1)]; >> xck=fft(xcn); >> for i=1:1:8

xenii=xeni(N2,xen,i-1); xenii=[xenii zeros(1,N1-1)]; xeki=fft(xenii); yki=xck.*xeki; yni=ifft(yki); y(i,:)=yni; end;

>> for i=0:1:7 for j=0:1:i*N2-1

ynii(i+1,[0+1:1:i*N2-1+1])=0; end;

for j=i*N2:1:N1+(i+1)*N2-2

ynii(i+1,[i*N2+1:1:N1+(i+1)*N2-2+1])=y(i+1,:); end;

for j=N1+(i+1)*N2-1:1:N1+8*N2-2

ynii(i+1,[N1+(i+1)*N2-1+1:1:N1+8*N2-2+1])=0; end;

end;

>> yn=zeros(1,N1+8*N2-1); >> for i=1:1:8 yn=yn+ynii(i,:); end;

>> n=0:1:N1+8*N2-2;

>> stem(n,yn);xlabel('n');ylabel('幅度');legend('重叠相加法

');

>> xen21=shiftmm(N1-1,xen); >> for i=1:1:8

xen2i(i,:)=xenni(N1,N2,xen21,i-1); end;

>> for i=1:1:8 xek2i=fft(xen2i(i,:)); yk2i=xck.*xek2i; yn2i=ifft(yk2i); y2(i,:)=yn2i;; end;

>> y2(:,1:N1-1)=[;;;;;;;;]; >> n2=0:1:8*N2-1;

>> stem(n2,[y2(1,:) y2(2,:) y2(3,:) y2(4,:) y2(5,:) y2(6,:) y2(7,:) y2(8,:)]);xlabel('n');ylabel('幅度');legend('重叠保留法');

(7)用FFT分别计算xa(n)(p=8,q=2)和xb(n)(a=0.1,f=0.0625)的16点循环相关和线性相关,问一共有多少种结果,它们之间有何异同点。

解答: 1)求线性相关 >> n=0:1:15;

>> xan=exp(-(n-8).^2/2);

>> xbn=exp(-0.1*n).*sin(2*pi*0.0625*n); >> k=length(xbn);

>> xan1=[xan zeros(1,k-1)]; >> xbn1=[xbn zeros(1,k-1)]; >> xak=fft(xan1); >> xbk=fft(xbn1);

>> rm=real(ifft(conj(xak).*xbk)); >> rm1=[rm(k+1:2*k-1) rm(1:k)]; >> m=(-k+1):(k-1);

>> stem(m,rm1);xlabel('n');ylabel('幅度');legend('线性相关');

2)求循环相关 >> n=0:1:15;

>> xan=exp(-(n-8).^2/2);

>> xbn=exp(-0.1*n).*sin(2*pi*0.0625*n); >> k=length(xbn); >> xak=fft(xan); >> xbk=fft(xbn);

>> rm=real(ifft(conj(xak).*xbk));

>> stem(n,rm);xlabel('n');ylabel('幅度');legend('循环相关

');

(8)用FFT分别计算xa(n)(p=8,q=2)和xb(n)(a=0.1,f=0.0625)的自相关函数。

解答: >> n=0:1:15;

>> xan=exp(-(n-8).^2/2); >> k=length(xan); >> xak=fft(xan,2*k);

>> rm=real(ifft(conj(xak).*xak)); >> rm=[rm(k+2:2*k) rm(1:k)]; >> m=(-k+1):(k-1);

>> stem(m,rm);xlabel('m');ylabel('幅度

');

(2) >> n=0:1:15;

>> xbn=exp(-0.1*n).*sin(2*pi*0.0625*n); >> k=length(xbn); >> xbk=fft(xbn,2*k);

>> rm=real(ifft(conj(xbk).*xbk)); >> rm=[rm(k+2:2*k) rm(1:k)]; >> m=(-k+1):(k-1);

>> stem(m,rm);xlabel('m');ylabel('幅度

');


相关内容

  • 快速傅里叶变换原理及其应用(快速入门)
  • 快速傅里叶变换的原理及其应用 摘要 快速傅氏变换(FFT),是离散傅氏变换的快速算法,它是根据离散傅氏变换的奇.偶.虚.实等特性,对离散傅立叶变换的算法进行改进获得的.它对傅氏变换的理论并没有新的发现,但是对于在计算机系统或者说数字系统中应用离散傅立叶变换,可以说是进了一大步. 傅里叶变换的理论与方 ...

  • 机械工程测试技术实验报告
  • 实 验 报 告 (理工类) 课 程 名 称: 机械工程测试技术 课 程 代 码: 8400271 学生所在学院: 机械工程与自动化学院 年级/专业/班: 09机电3班 学 生 姓 名: 王 泽 学 号: [**************] 实验总成绩: 任 课 教 师: 余 愚 开 课 学 院: 机械 ...

  • 基于FFT的连续信号谱分析
  • 毕 业 设 计(论文) 题 目:基于FFT 的连续信号谱分析 学 院: 电气与电子信息工程学院 专业名称: 电子信息工程 学 号: 学生姓名: XX 指导教师: 2013年 05月 25日 摘 要 离散傅里叶变换(DFT)的快速算法FFT 的出现,使DFT 在数字通信.语音信号处理.图像处理.功率谱 ...

  • DSP课程设计论文
  • 第一章 绪论 语音信号处理课程的主要内容包括语音信号的分析方法及其应用.为了帮助学生理解与掌握 课程中的基本原理和基本分析方法,具有设计开发应用通信语音系统的基本能力,本文在介绍语音信号处理课程的内容和特点的基础上,结合MATLAB 软件和数字信号处理器DSP 硬件平台,提出了基于MATLAB 和D ...

  • 图像的滤波及增强
  • 实验三 图像的滤波及增强 一. 实验目的 1进一步了解MatLab 软件/语言,学会使用MatLab 对图像作滤波处理,使学生有机会掌握滤波算法,体会滤波效果. 2了解几种不同滤波方式的使用和使用的场合,培养处理实际图像的能力,并为课堂教学提供配套的实践机会. 3 熟悉傅立叶变换的基本性质: 4 熟 ...

  • 数字信号处理实验报告
  • 数字信号处理 实验报告 实验一 信号(模拟.数字)的输入输出实验 (常见离散信号产生和实现) 一.实验目的 1.加深对常用离散信号的理解: 2.掌握matlab 中一些基本函数的建立方法. 二.实验原理 1. 单位抽样序列 δ(n ) =⎨ ⎧1⎩0 n =0n ≠0 在MATLAB 中可以利用ze ...

  • 识别系统中的特征参数提取过程研究[1]
  • 第5卷第4期2009年10月 沈阳工程学院学报(自然科学版) JournalofShenyangInstituteofEngineering(NaturalScience) VOI.5No.4 Oct.2009 语音识别系统中的特征参数提取过程研究 孟祥斌,尹常永,包妍 (沈阳工程学院自动控制工程系 ...

  • MATLAB在信号频谱分析中的应用
  • 摘要:利用matlab 对信号频谱进行分析,通过两种方法将频谱横轴的快速傅里叶变换点数转换成频率.以常见信号频谱分析为例,将结果以图形化的方式显示出来.通过matlab 仿真,使以往抽象的内容具体化. 关键词:频谱分析:matlab :快速傅里叶变换:仿真 中图分类号:tn911.6 文献标识码:a ...

  • 数字信号处理大纲
  • 北京邮电大学世纪学院<数字信号处理>课程教学大纲 课程编号: 课程名称: 数字信号处理 Digital Signal Processing 课程类别: 专业基础课 总学时: 48学时 总学分: 3 适用对象:信息工程.通信工程.电子信息工程专业学生 课程性质:本课程是电子信息类专业继&q ...