一、实验目的
1.掌握模拟信号采样前后频谱的变化,以及如何选择采样频率才能使采样后的信号不丢失信息;
2.掌握频域采样会引起时域周期化的概念,以及频域采样定理及其对频域采样点数选择的指导作用。
二、实验内容
本实验为验证性实验项目,要求通过利用MATLAB软件编写程序,绘制波形,对时域采样定理和频域采样定理进行验证。
三、实验器材(设备、元器件)
四、实验步骤
1. 时域采样理论的验证。给定模拟信号
式中, ,
,
,它的幅频特性曲线如图1所示。
图1
现用DFT求该模拟信号的幅频特性,以验证时域采样理论。
按照Xa (t)的幅频特性曲线,选取三种采样频率,即Fs =1kHz,300Hz,200Hz。观测时间选Tp =64ms,验证时域采样理论。
为使用DFT,首先用下面的公式产生时域离散信号,对三种采样频率、采样序列按顺序用、
、
表示。
因为采样频率不同,得到的、
、
的长度不同,长度(点数)用公式N=Tp ×Fs 计算。选FFT的变换点数为M=64,序列长度不够64的尾部加零。
X(k)=FFT[x(n)] k=0,1,2,3,…,M-1
式中,k代表的频率为
要求:编写实验程序,计算x1 (n)、x2 (n)、x3 (n)的幅度特性,并绘图显示。观察分析频谱混叠失真。
2. 频域采样理论的验证。给定信号如下:
编写程序分别对频谱函数 在区间
上等间隔采样32点和16点,得到
和
:
再分别对 和
进行32点和16点IFFT,得到
和
:
分别画出 、
和
的幅度谱,并绘制显示
、
和
的波形,进行对比和分析,验证总结频域采样理论。
五、实验程序及结果分析
1. 时域采样理论验证:
Clear all;
Tp=64/1000;
%产生M长采样序列x(n)
% Fs=1000;T=1/Fs;
Fs=1000;T=1/Fs;
M=Tp*Fs;n=0:M-1;
A=444.128;alph=pi*50*2^0.5;omega=pi*50*2^0.5;
xnt=A*exp(-alph*n*T).*sin(omega*n*T);
Xk=T*fft(xnt,M); %M点FFT[xnt)]
yn='xa(nT)';
subplot(3,2,1);tstem(xnt,yn);box on;title('(a) Fs=1000Hz');
k=0:M-1;fk=k/Tp;
subplot(3,2,2);plot(fk,abs(Xk));title('(a) T*FT[xa(nT)],Fs=1000Hz');
xlabel('f(Hz)');
ylabel('幅度');axis([0,Fs,0,1.2*max(abs(Xk))])
% Fs=300;T=1/Fs;
Fs=300;T=1/Fs;
M=ceil(Tp*Fs);n=0:M-1;
xnt=A*exp(-alph*n*T).*sin(omega*n*T);
Xk=T*fft(xnt,M); %M点FFT[xnt)]
yn='xa(nT)';
subplot(3,2,3);tstem(xnt,yn);box on;title('(b) Fs=300Hz');
k=0:M-1;fk=k/Tp;
subplot(3,2,4);plot(fk,abs(Xk));title('(b) T*FT[xa(nT),Fs=300Hz');
xlabel('f(Hz)');ylabel('幅度');axis([0,Fs,0,1.2*max(abs(Xk))])
% Fs=200;T=1/Fs;
Fs=200;T=1/Fs;
M=ceil(Tp*Fs);n=0:M-1;
xnt=A*exp(-alph*n*T).*sin(omega*n*T);
Xk=T*fft(xnt,M); %M点FFT[xnt)]
yn='xa(nT)';subplot(3,2,5);tstem(xnt,yn);box on;title('(c) Fs=200Hz');
k=0:M-1;fk=k/Tp;
subplot(3,2,6);plot(fk,abs(Xk));title('(c) T*FT[xa(nT),Fs=200Hz');
xlabel('f(Hz)');ylabel('幅度');axis([0,Fs,0,1.2*max(abs(Xk))])
function tstem(xn,yn)
%时域序列绘图函数
% xn:信号数据序列,yn:绘图信号的纵坐标名称(字符串)
n=0:length(xn)-1;
stem(n,xn,'.');
xlabel('n');ylabel(yn);
axis([0,n(end),min(xn),1.2*max(xn)])
end
实验结果如下:
结论分析:时域采样理论的验证结果如上图,采样序列的频谱的确是以采样频率为周期对模拟信号频谱的周期进行延拓。当采样频率为1000Hz,300Hz时,频谱几乎不失真;当采样频率为200Hz时,频谱混叠失真比较严重;当采样频率为1000Hz 时频谱混叠很小;当采样频率为 300Hz 时,混叠很严重;当采样频率为200Hz 时,频谱混叠更严重。所以由此可知,采样频率必须大于等于模拟信号最高频率的两倍以上,才能使采样信号的频谱不产生频谱混叠。
2. 频域采样理论:
clear all;
% 频域采样理论验证
M=27;N=32;n=0:M;
%产生M长三角波序列x(n)
xa=0:floor(M/2); xb= ceil(M/2)-1:-1:0; xn=[xa,xb];
Xk=fft(xn,1024); %1024点FFT[x(n)],用于近似序列x(n)的TF
X32k=fft(xn,32); %32点FFT[x(n)]
x32n=ifft(X32k); %32点IFFT[X32(k)]得到x32(n)
X16k=X32k(1:2:N);%隔点抽取X32k得到X16(K)
x16n=ifft(X16k,N/2);%16点IFFT[X16(k)]得到x16(n)
subplot(3,2,2);stem(n,xn,'.');box on
title('(b) 三角波序列x(n)');xlabel('n');ylabel('x(n)');axis([0,32,0,20])
k=0:1023;wk=2*k/1024;
subplot(3,2,1);plot(wk,abs(Xk));title('(a)FT[x(n)]');
xlabel('\omega/\pi');ylabel('|X(e^j^\omega)|');axis([0,1,0,200])
k=0:N/2-1;
subplot(3,2,3);stem(k,abs(X16k),'.');box on
title('(c) 16点频域采样');xlabel('k');ylabel('|X_1_6(k)|');axis([0,8,0,200])
n1=0:N/2-1;
subplot(3,2,4);stem(n1,x16n,'.');box on
title('(d) 16点IDFT[X_1_6(k)]');xlabel('n');ylabel('x_1_6(n)');axis([0,32,0,20])
k=0:N-1;
subplot(3,2,5);stem(k,abs(X32k),'.');box on
title('(e) 32点频域采样');xlabel('k');ylabel('|X_3_2(k)|');axis([0,16,0,200])
n1=0:N-1;
subplot(3,2,6);stem(n1,x32n,'.');box on
title('(f) 32点IDFT[X_3_2(k)]');xlabel('n');ylabel('x_3_2(n)');axis([0,32,0,20])
实验结果如下:
结论分析:上图验证了频域采样理论和频域采样定理。由上图知三角波序列长度为26,即时域离散信号长度M=26。对信号x(n)的频谱函数间隔采样N=16时,N点IDFT[ XN(k)]得到的序列正是原序列x(n)以16为周期进行周期延拓后的主值区序列。由于N<M,所以发生了时域混叠失真,因此,xN(n)与x(n)不同。当N=32时,由于N>M,频域采样定理,所以不存在时域混叠失真,因此,xN(n)与x(n)相同,如果时域长为M,当 N≥M时,时域周期延拓后,主值区间的序列等于原序列,无失真。当N<M时,时域会有混叠失真,这时,只在M-N≤n≤ N-1范围内,没有混叠失真。