提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
数字信号处理 实验一 时域采样与频域采样【实验报告】
1.时域采样理论的验证。给定模拟信号,
式中A=444.128,a =50 π,w0 =50 πrad/s,它的幅频特性曲线如图1.1
图1.1 xa(t)的幅频特性曲线
现用DFT(FFT)求该模拟信号的幅频特性,以验证时域采样理论。按照xa(t)的幅频特性曲线,选取三种采样频率,即 Fs=1kHz,300Hz,200Hz。观测时间选Tp=50ms 。为使用DFT,首先用下面公式产生时域离散信号,对三种采样频率,采样序列按顺序用x1(n),x2(n),x3(n)表示。
因为采样频率不同,得到的x1(n),x2(n),x3(n)的长度不同, 长度(点数)用公式
计算。选FFT的变换点数为M=64,序列长度不够64的尾部加零。
X(k)=FFT[x(n)] , k=0,1,2,3,-----,M-1。式中k代表的频率为
要求: 编写实验程序,计算x1(n),x2(n),x3(n)的幅度特性,并绘图显示。观察分析频谱混叠失真。
clear all
clc
%Fs=1000Hz
Tp = 64/1000;
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);
yn1 = 0:length(xnt)-1;
subplot(3,2,1);stem(yn1,xnt,'.');xlabel('n');ylabel('xa(n*T)');title('x1(n)的幅度特性,Fs=1000Hz');
k = 0:M-1; fk = k/Tp;
subplot(3,2,2);plot(fk,abs(Xk));xlabel('f(Hz)');ylabel('幅度');title('T*FT[xa(nT)],Fs=1000Hz');
%Fs=2000Hz
Tp = 64/1000;
Fs = 2000; 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);
yn1 = 0:length(xnt)-1;
subplot(3,2,3);stem(yn1,xnt,'.');xlabel('n');ylabel('xa(n*T)');title('x1(n)的幅度特性,Fs=2000Hz');
k = 0:M-1; fk = k/Tp;
subplot(3,2,4);plot(fk,abs(Xk));xlabel('f(Hz)');ylabel('幅度');title('T*FT[xa(nT)],Fs=2000Hz');
%Fs=200Hz
Tp = 64/1000;
Fs = 200; 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);
yn1 = 0:length(xnt)-1;
subplot(3,2,5);stem(yn1,xnt,'.');xlabel('n');ylabel('xa(n*T)');title('x1(n)的幅度特性,Fs=200Hz');
k = 0:M-1; fk = k/Tp;
subplot(3,2,6);plot(fk,abs(Xk));xlabel('f(Hz)');ylabel('幅度');title('T*FT[xa(nT)],Fs=200Hz');
当采样频率为1000Hz,2000Hz时,频谱几乎不失真;当采样频率为200Hz时,频谱混叠失真比较严重;
由图可见,采样序列的频谱的确是以采样频率为周期对模拟信号频谱的周期延拓。当采样频率为1000Hz和2000Hz时频谱混叠很小;当采样频率为200Hz时,在频率100Hz附近频谱混叠很严重。
编写程序分别对频谱函数
在区间[0,2*pi]上等间隔采样32
和16点,得到 X32(k)和X16(k):
分别画出
的幅度谱,并绘图显示x(n)、 X32(k)和X16(k) 的波形,进行对比和分析,验证总结频域采样理论。
提示:频域采样用以下方法容易变程序实现。
① 直接调用MATLAB函数fft计算32(k)=FFT[x(n)]就得到
在 [0,2pi]的32点频率域采样
② 抽取X32(k)的偶数点即可得到
在[0,2pi]的16点频率域采样 ,即
○3 当然也可以按照频域采样理论,先将信号x(n)以16为周期进行周期延拓,取其主值区(16点),再对其进行16点DFT(FFT),得到的就是
在[0,2*pi]的16点频率域采样X16(k)。
%DTFT
M=27;
n=0:M;
k=0:1023;
wk=2*k/1024;
Xk=fft(xn,1024);
subplot(3,2,1);
plot(wk,abs(Xk));title('DTFT[x(n)]');
%三角波序列
clear all
clc
xn=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,13,12,11,10,9,8,7,6,5,4,3,2,1];
n=0:27-1;
subplot(3,2,2);
stem(n,xn);title('三角波序列');xlabel('n');ylabel('x(n)');
%(2)32点DFT:X(k)
xn=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,13,12,11,10,9,8,7,6,5,4,3,2,1];
xn=[xn,ones(1,32-27)];
n1=1:32;
X32k=fft(xn,32);
x32n =ifft(X32k);
subplot(3,2,3);
stem(n1,abs(X32k),'.');title('32点DFT:X(k)');xlabel('k');ylabel('X(k)');
subplot(3,2,4);
stem(n1,abs(x32n),'.');title('32点IDFT:x(n)');xlabel('n');ylabel('x(n)');
%(2)16点DFT:X(k)
clear all
clc
xn=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,13,12,11,10,9,8,7,6,5,4,3,2,1];
n2=1:16;
xn=[12,12,12,12,12,12,12,12,12,12,12,12,13,14,13,12]
X16k=fft(xn,16);
x16n =ifft(X16k);
subplot(3,2,5);
stem(n2,abs(X16k),'.');title('16点DFT:X(k)');xlabel('k');ylabel('X(k)');
subplot(3,2,6);
stem(n2,abs(x16n),'.');title('16点IDFT:x(n)');xlabel('n');ylabel('x(n)');
如果时域长为M,当 N≥M时,时域周期延拓后, 主值区间的序列等于原序列,无失真。当N
如果序列x(n)的长度为M,希望得到其频谱 对于求频域采样点数N小于原时域序列长度M的N点离散频谱时,可先对原序列x(n)以N为周期进行周期延拓后取主值区序列, 本文是基于MATLAB的数字信号处理实验一的实验报告。
在[0,2*pi]上的N点等间隔采样,当N分析
,再计算N点DFT则得到N点频域采样
总结