一、试验目的
(1).在理论学习的基础上。加深对FFT的理解,熟悉matlab中的有关函数。
(2).应用FFT对典型 信号进行频谱分析。
(3).了解应用FFT进行信号频谱分析过程中可能出现的问题。
(4).应用FFT实现序列的线性卷积和相关。
二、实验内容
1.观察高斯序列的时域和幅频特性,固定信号xa(n)中参数p=8,改变q的值使q分别等于2、4、8,观察他们的时域和幅频特性,了解当q取不同值时,对信号序列的时域和幅频特性的影响;固定q=8,改变p,使p分别等于8、13、14,观察参数p变化对信号序列的时域和幅频特性的影响,注意p等于多少时会发生明显的泄漏现象,混叠是否也随之出现?记录实验中观察到的现象,绘出相应的时域序列和幅频特性曲线。
(1)固定p=8,使q=2和4的时域和频域图
n=0:15
x=exp((16*n-n.^2-)./2)
subplot(2,2,1);
plot(n,x,'-o')
title('时域特性');
xlabel('n');
ylabel('y(n)')
y=abs(fft(x))
subplot(2,2,2);
stem(n,y,'-o')
xlabel('k');
ylabel('y(k)')
title('幅频特性');
x=exp((16*n-n.^2-)./4)
subplot(2,2,3);
plot(n,x,'-o')
title('时域特性');
xlabel('n');
ylabel('y(n)')
y=abs(fft(x))
subplot(2,2,4);
stem(n,y,'-o');
xlabel('k');
ylabel('y(k)')
title('幅频特性');
使q=8的时域和频域图
n=0:15
x=exp((16*n-n.^2-)./8)
plot(n,x,'-o')
title('时域特性');
xlabel('n');
ylabel('y(n)')
y=abs(fft(x))
stem(n,y,'-o')
xlabel('k');
ylabel('y(k)')
title('幅频特性');
(2)固定q=8,使q=8和13的时域和频域图
n=0:15
x=exp((16*n-n.^2-)./8)
subplot(2,2,1);
plot(n,x,'-o')
title('时域特性');
xlabel('n');
ylabel('y(n)')
y=abs(fft(x))
subplot(2,2,2);
stem(n,y,'-o')
xlabel('k');
ylabel('y(k)')
title('幅频特性');
x=exp((26*n-n.^2-169)./8)
subplot(2,2,3);
plot(n,x,'-o')
title('时域特性');
xlabel('n');
ylabel('y(n)')
y=abs(fft(x))
subplot(2,2,4);
stem(n,y,'-o')
xlabel('k');
ylabel('y(k)')
title('幅频特性');
使p=14的时域和频域图
x=exp((28*n-n.^2-196)./8)
plot(n,x,'-o')
title('时域特性');
xlabel('n');
ylabel('y(n)')
y=abs(fft(x))
stem(n,y,'-o')
xlabel('k');
ylabel('y(k)')
title('幅频特性');
实验结果分析:
由图形可知,当固定p,q取不同值时,随着q的增大,其相对应的时域幅值会增大,而且容易看出,它们的时域图关于n=8对称。
随着q值的增大,q分别等于2、4、8时,同一个n点所对应的幅度逐渐减小,幅度等于或近似等于零的点逐渐增多,这是由于q值的增大,导致时域中的幅值略微增大,但通过DFT变换之后将这种变化放大,使得其在幅频特性中q的影响变大了。时域的乘积对应频域的卷积,所以,加窗后的频谱实际是原信号频谱与矩形窗函数频谱的卷积,卷积的结果使频谱延伸到了主瓣以外,且一直延伸到无穷。
可知:其p值固定不变时,q值越小越容易发生泄漏现象,反之,q值越大,越接近其真实图形。当p=13时,x(n)被截断,出现了明显的泄漏,边缘幅度与x1(k)不同,因而带有混叠现象。
2观察衰减正弦序列xb(n)的时域和幅频特性,a=0.1,f=0.0625,检查谱峰出现位置是否正确,注意频谱的形状,绘出幅频特性曲线,改变f,使f分别等于0.4375和0.5625,观察这两种情况下,频谱的形状和谱峰出现位置,有无混叠和泄露现象?说明产生现象的原因。
f=0.0625的程序
n=0:15;
a=0.1;
f=0.0625;
x=exp(-a*n).*sin(2*pi*f*n);
plot(n,x,'-o')
title('时域特性');
xlabel('n');
ylabel('y(n)')
y=abs(fft(x))
stem(n,y,'-o')
xlabel('k');
ylabel('y(k)')
title('幅频特性')
f=0.4375的程序
n=0:15;
a=0.1;
f=0.4375;
x=exp(-a*n).*sin(2*pi*f*n);
plot(n,x,'-o')
title('时域特性');
xlabel('n');
ylabel('y(n)')
y=abs(fft(x))
stem(n,y,'-o')
xlabel('k');
ylabel('y(k)')
title('幅频特性')
f=0.5625的程序
n=0:15;
a=0.1;
f=0.5625;
x=exp(-a*n).*sin(2*pi*f*n);
plot(n,x,'-o')
title('时域特性');
xlabel('n');
ylabel('y(n)')
y=abs(fft(x))
stem(n,y,'-o')
xlabel('k');
ylabel('y(k)')
title('幅频特性')
实验结果分析:
由以上实验所得的图形可知,当a=0.1,f=0.0625时吗,频谱主瓣较宽,呈现主瓣中间较为平缓,两侧较高的想象,采样频率f太小,导致谱峰出现的位置不正确。当a=0.1,f分别等于0.4375,0.5625时,随着采样频率f的增大,频谱主瓣越来越窄,频谱中间较大,两侧较小,谱峰出现在w=7和9附近,混叠和泄漏现象相对减轻。且当f=0.5625时产生混叠现象,因为其f>0.5,不满足奈奎斯特采样定理。
3. 观察三角波和反三角波序列的时域和幅频特性,用N=8点FFT分析信号序列xc(n)和xd(n)的幅频特性,观察两者的序列形状和频谱曲线有什么异同?绘出两序列及其幅频特性曲线。在xc(n)和xd(n)末尾补零,用N=32点FFT分析这两个观察幅频特性发生了什么变化?两种情况下的FFT频谱还有相同之处吗?这些变化说明了什么?
n2=[0 0 0 0 4 5 6 7];
A=[0 0 0 0 8 8 8 8];
x1=zeros(1,8);
n=n1+n2;
x1(1:4)=n(1:4);
x1(5:8)=A(5:8)-n(5:8);
subplot(2,2,1);
plot(n,x1);
grid;
set(gca,'xtick',n);
xlabel('n');
ylabel('xc(n)');
title('三角波序列时域');
xk1=abs(fft(x1));
subplot(2,2,2);
stem(n,xk1);
grid;
set(gca,'xtick',n);
xlabel('k');
ylabel('幅度');
title('幅度特性');
B=[4 4 4 4 4 4 4 4];
x2=zeros(1,8);
n=n1+n2;
x2(1:4)=B(1:4)-n(1:4);
x2(5:8)=n(5:8)-B(5:8);
subplot(2,2,3);
plot(n,x2);
grid;
set(gca,'xtick',n);
xlabel('n');
ylabel('xd(n)');
title('反三角波序列时域');
xk2=abs(fft(x2));
subplot(2,2,4);
stem(n,xk1);
grid;
set(gca,'xtick',n);
xlabel('k');
ylabel('幅度');
title('幅度特性');
实验结果分析:
由实验所得的图形知,的时域序列在n=4时取得最大值,两侧依次减小,且呈现对称趋势,而序列则相反,在n=4时,取得最小值,两侧依次增大,且呈现对称趋势,和的幅频特性曲线基本相同。
n1=[0 1 2 3 0 0 0 0];
n2=[0 0 0 0 4 5 6 7];
A=[0 0 0 0 8 8 8 8];
x1=zeros(1,8);
n=n1+n2;
x1(1:4)=n(1:4);
x1(5:8)=A(5:8)-n(5:8);
subplot(2,2,1);
plot(n,x1);
grid;
set(gca,'xtick',n);
xlabel('n');
ylabel('xc(n)');
title('三角波序列时域,N=8');
xk1=abs(fft(x1));
subplot(2,2,2);
stem(n,xk1);
grid;
set(gca,'xtick',n);
xlabel('k');
ylabel('幅度');
title('幅度特性');
B=[4 4 4 4 4 4 4 4];
x2=zeros(1,8);
n=n1+n2;
x2(1:4)=B(1:4)-n(1:4);
x2(5:8)=n(5:8)-B(5:8);
subplot(2,2,3);
plot(n,x2);
grid;
set(gca,'xtick',n);
xlabel('n');
ylabel('xd(n)');
title('反三角波序列时域,N=8');
xk2=abs(fft(x2));
subplot(2,2,4);
stem(n,xk1);
grid;
set(gca,'xtick',n);
xlabel('k');
ylabel('幅度');
title('幅度特性');
n1=[0 1 2 3 0 0 0 0];
实验结果分析:
由实验所得的图形知,N=32点时和的幅频特性都更加密集,使得“栅栏效应”减小,而对于来说变化更加明显,N=32时,认为的再之后补零,从而变动了DFT的点数,人为的改变了对真实频谱采样的点数和位置,相当于搬动了“尖桩栅栏”的位置,从而使得频谱的峰点和谷点暴露出来,频谱线变密。N=32时,和的频谱差别较大,但总体趋势仍然都是中间出现最小,两侧呈现对称趋势。
4. 一个连续信号含两个频率分量,经采样得 n=0,1,…N-1,已知N=16,分别为1/16,1/,观察其频谱;当N=128时不变,其结果有何不同,为什么?
n=0:1:15;
x1=sin(2*pi*0.125*n)+cos(2*pi*(0.125+1/16)*n);
subplot(2,2,1);
plot(n,x1,'-*');
xlabel('t/T △f=1/16,N=15');
ylabel('x(n)');
title('时域特性');
xk1=abs(fft(x1));
subplot(2,2,2);
stem(n,xk1)
xlabel('k');
ylabel('X(k)');
title('频域特性');
x2=sin(2*pi*0.125*n)+cos(2*pi*(0.125+1/)*n);
subplot(2,2,3);
plot(n,x2,'-*');
xlabel('t/T △f=1/,N=15');
ylabel('x(n)');
title('时域特性');
xk2=abs(fft(x2));
subplot(2,2,4);
stem(n,xk2)
xlabel('k');
ylabel('X(k)');
title('频域特性');
n=0:1:127;
x1=sin(2*pi*0.125*n)+cos(2*pi*(0.125+1/16)*n);
subplot(2,2,1);
plot(n,x1,'-*');
xlabel('t/T △f=1/16,N=15');
ylabel('x(n)');
title('时域特性');
xk1=abs(fft(x1));
subplot(2,2,2);
stem(n,xk1)
xlabel('k');
ylabel('X(k)');
title('频域特性');
x2=sin(2*pi*0.125*n)+cos(2*pi*(0.125+1/)*n);
subplot(2,2,3);
plot(n,x2,'-*');
xlabel('t/T △f=1/,N=15');
ylabel('x(n)');
title('时域特性');
xk2=abs(fft(x2));
subplot(2,2,4);
stem(n,xk2)
xlabel('k');
ylabel('X(k)');
title('频域特性');
实验结果分析:
由以上实验所得的实验图形知,N=16时,由x1(jw)和x2(jw)比较可以看出,越小,其每个相同的点所对应的幅度值越小,可以观察到两个明显的谱峰。当N=时,出现了多个谱峰,其中两个谱峰较为明显。当N=128时,由x3(jw)和x4(jw)看出,两序列的FFT频谱只能观测到两个谱峰,截取长度增加,谱线变的非常密集,频谱更接近真实值,泄漏和混叠现象变小,栅栏效应也相应变小,频谱的分辨率随之提高。
5.用FFT分别计算和的16点循环卷积和线性卷积,循环相关和线性相关。
n1=0:1:15;
p1=8;
q1=2;
x=exp(-(n1-p1).^2/q1);
n2=0:1:15;
a=0.1;
f2=0.0625;
y=(exp(-a*n2)).*sin(2*pi*f2*n2);
N=length(x);
n=0:N-1;
n3=0:30;
X=fft(x);
Y=fft(y);
x32=[x zeros(1,16)];
y32=[y zeros(1,16)];
X32=fft(x32);
Y32=fft(y32);
z16=ifft(X.*Y);
z32=ifft(X32.*Y32);
subplot(2,2,1);
plot(n,z16,'-*');
xlabel('n');
ylabel('z(n)');
title('循环卷积结果');
subplot(2,2,2);
plot(n3,z32(1:2*N-1),'-o');
xlabel('n');
ylabel('z(n)');
title('线性卷积结果');
rm16=real(ifft(conj(X).*Y));
rm32_0=real(ifft(conj(X32).*Y32));
rm32=[rm32_0(N+2:2*N) rm32_0(1:N)];
m=n;
subplot(2,2,3);
plot(m,rm16,'--');
xlabel('m');
ylabel('rm');
title('循环相关结果');
m=-(N-1):N-1;
subplot(2,2,4);
plot(m,rm32,'--o');
xlabel('m');
ylabel('rm');title('线性相关结果');
实验结果分析:
由实验所得的图形知,当L>N1+N2-1时,循环卷积不会发生混叠现象,所以在这个条件下,循环卷积是线性卷积的主值,线性卷积可由循环卷积得到。用循环卷积计算线性卷积通常也称为快速卷积。下载本文