实验四时域采样定理
实验内容和步骤
1、 给定模拟信号如下:xa(t)Aesin(0t)u(t)
假设式中A444.128,502,0502rad/s,将这些参数代入式中,对xa(t)进行傅立叶变换,得到Xa(j),并可画出它的幅频特性Xa(jf)~f;根据该曲线可以选择采样频率。这里给定采样频率如下:f=1 kHz,300 Hz,200 Hz。
分别用这些采样频率形成时域离散信号x(n),打印三种采样频率的幅度曲线|X(ejω)|~ω,k=0,1,2,3,…,M-1;M=64。 Matlab编程如下:
%用1000Hz采样频率 clear all;
T1=1/1000; n=0:64/(1000*T1); A=444.128; a=50*sqrt(2.0);w0=50*sqrt(2.0)*pi; xn1=A*exp(-a*n*T1).*sin(w0*n*T1); Xk1=fft(xn1,1024); subplot(322);stem(n,xn1,'.'); grid on
xlabel('n');ylabel('x(n)');title('1000Hz采样 x(n)'); k=0:1023;wk=2*k/1024;
subplot(321);plot(wk,abs(Xk1));grid on;
xlabel('\omega/\pi');ylabel('|X(e^j^\omega)|');title('FT[x(n)]');
%用300Hz采样频率 T2=1/300; n2=0:64/(1000*T2);
A=444.128; a=50*sqrt(2.0);w0=50*sqrt(2.0)*pi; xn2=A*exp(-a*n2*T2).*sin(w0*n2*T2); Xk2=fft(xn2,1024);
at
subplot(324);stem(n2,xn2,'.');grid on ;
title(' 300Hz采样 x(n2)');xlabel('n');ylabel('x(n2)'); k=0:1023;wk=2*k/1024;subplot(323);plot(wk,abs(Xk2));grid
on ;title('(a)FT[x(n2)]');xlabel('\omega/\pi');ylabel('|X(e^j^\omega)|'); %用200Hz采样频率 T3=1/200; a=50*sqrt(2.0);
w0=50*sqrt(2.0)*pi;xn3=A*exp(-a*n3*T3).*sin(w0*n3*T3);
Xk3=fft(xn3,1024); subplot(326);stem(n3,xn3,'.');grid on ;
title('200Hz采样 x(n3)');
xlabel('n');ylabel('x(n3)');k=0:1023;wk=2*k/1024; subplot(325);plot(wk,abs(Xk3));grid on ;
title('(a)FT[x(n3)]');xlabel('\omega/\pi');ylabel('|X(e^j^\omega)|');
n3=0:64/(1000*T3); A=444.128;
2.按照选定的采样频率对模拟信号进行采样,得到时域离散信号x(n):
anT
x(n)xa(nT)Aesin(0nT)u(nT)
这里给定采样频率如下:A50,502,0502rad/s
300 Hz,200 Hz。分别用这些采样频率形成时域离散信号,按顺序分别用x1(n)、fs=1 kHz,
x2(n)、x3(n)表示。选择观测时间Tp50ms。
clear all;
T1=1/200; T2=1/300; T3=1/1000;
A=50;a=50*sqrt(2);w0=50*(sqrt(2))*pi; N=30;n=0:N-1;
x1n=A*exp(-a*n*T3).*sin(w0*n*T3); subplot(322);stem(n,abs(x1n),'.');grid;
title('(b) N=30');xlabel('n');ylabel('原函数x1(n)'); X1k=fft(x1n);
k=0:N-1;subplot(321);stem(k,abs(X1k),'.');grid; title('(a) |X1(k)| N=30');xlabel('k');ylabel('|X1(k)|'); N=50;n=0:N-1;
x2n=A*exp(-a*n*T2).*sin(w0*n*T2); subplot(324);stem(n,abs(x2n),'.');grid;
title('(a) N=50');xlabel('n');ylabel('原函数xn2(n)'); X2k=fft(x2n); k=0:N-1;
subplot(323);stem(k,abs(X2k),'.');grid;
title('(b) |X2(k)| N=50 ');xlabel('k');ylabel('|X2(k)|'); N=80;n=0:N-1;
x3n=A*exp(-a*n*T3).*sin(w0*n*T3); subplot(326);stem(n,abs(x3n),'.');grid;
title('(b) N=80');xlabel('n');ylabel('原函数x3(n)'); X3k=fft(x3n); k=0:N-1;
subplot(325);stem(k,abs(X3k),'.');grid;
title('(a) |X3(k)| N=80');xlabel('k');ylabel('|X3(k)|');
3.计算x(n)的傅立叶变换X(e): n1
jwjwn
X(e)FT[x(n)]AeanTsin (5) (0nTi)e
n0
式中,i1,2,3,分别对应三种采样频率的情况
i
i
jw
111
s,T2s,T3s。采样点数以下式计算:niT1
1000300200
TpTi
(6)
式中,w是连续变量。为用计算机进行数值计算,改用下式计算: n1jwjwnanT
(7) X(e)DFT[x(n)]MAesin(0nTi)e
n02
k,k=0,1,2,3,…,M-1;M=64。可以调用MATLAB函数fft计算式中,wk
i
k
k
M
(7)式。
f=input('f= '); %输入取样频率f=1000
T=1/f;n=0:50/(1000*T);M=64;%设置信号有关参数 A=444.128; a=50*sqrt(2.0);w0=50*sqrt(2.0)*pi; xn=A*exp(-a*n*T).*sin(w0*n*T); %产生x(n) Xk=fft(xn,1024); %1024 点FFT[x(n)], 用于近似序列x(n)的FT
X64k=fft(xn,M); %FFT[x(n)]
x64n=ifft(X64k); %64 点IFFT[X64(k)]得到x64(n) subplot(2,2,1);stem(n,xn,'.');grid;box on title('(a) x1(n)');xlabel('n');ylabel('x1(n)');
k=0:M-1;subplot(2,2,2);stem(k,abs(X64k),'.');grid; title('(b) 64 点频域采样 输入取样频率f=1000'); xlabel('k');ylabel('|X64(k)|'); k=0:1023;wk=2*k/1024;
subplot(2,2,3);plot(wk,abs(Xk));grid;
title('(c)FT[x1(n)]');xlabel('\omega/\pi');ylabel('|X(e^j^\omega)|');
n1=0:M-1;subplot(2,2,4);stem(n1,x64n,'.');grid;box on title('(d) 64 点
IFFT[X64(k)]');xlabel('n');ylabel('x64(n)');
f=input('f= '); %输入取样频率f=300 T=1/f;n=0:50/(1000*T);M=64;%设置信号有关参数 A=444.128; a=50*sqrt(2.0);w0=50*sqrt(2.0)*pi;
xn=A*exp(-a*n*T).*sin(w0*n*T); %产生x(n) Xk=fft(xn,1024); %1024 点FFT[x(n)], 用于近似序列x(n)的FT
X64k=fft(xn,M); %FFT[x(n)]
x64n=ifft(X64k); %64 点IFFT[X64(k)]得到x64(n) subplot(2,2,1);stem(n,xn,'.');grid;
title('(a) x2(n)');xlabel('n');ylabel('x2(n)'); k=0:M-1;
subplot(2,2,2);stem(k,abs(X64k),'.');grid;box on title('(b) 64 点频域采样输入取样频率f=300'); xlabel('k');ylabel('|X64(k)|');
k=0:1023;wk=2*k/1024;
subplot(2,2,3);plot(wk,abs(Xk));grid;
title('(c)FT[x2(n)]');xlabel('\omega/\pi');ylabel('|X(e^j^\omega)|'); n1=0:M-1;
subplot(2,2,4);stem(n1,x64n,'.');grid;box on title('(d) 64 点IFFT[X64(k)]'); xlabel('n');ylabel('x64(n)'); f=input('f= '); %输入取样频率f=200 T=1/f;n=0:50/(1000*T);M=64; %设置信号有关参数 A=444.128; a=50*sqrt(2.0);w0=50*sqrt(2.0)*pi; xn=A*exp(-a*n*T).*sin(w0*n*T); %产生x(n) Xk=fft(xn,1024); %1024 点FFT[x(n)], 用于近似序列x(n)的FT
X64k=fft(xn,M); %FFT[x(n)]
x64n=ifft(X64k); %64 点IFFT[X64(k)]得到x64(n) subplot(2,2,1);stem(n,xn,'.');grid;box on title('(a) x3(n)');xlabel('n');ylabel('x3(n)');
k=0:M-1;subplot(2,2,2);stem(k,abs(X64k),'.');grid; title('(b) 64 点频域采样 输入取样频率f=200'); xlabel('k');ylabel('|X64(k)|');
k=0:1023;wk=2*k/1024;subplot(2,2,3);plot(wk,abs(Xk));grid;
title('(c)FT[x3(n)]');xlabel('\omega/\pi');ylabel('|X(e^j^\omega)|');
n1=0:M-1;subplot(2,2,4);stem(n1,x64n,'.');grid;box on title('(d) 64 点
IFFT[X64(k)]');xlabel('n');ylabel('x64(n)'); 键入f1、f2、f3 f= 1000 f= 300 f= 200
>> 图形输出如下:
4. 给定模拟信号如下:xa(t)Aecos(0t).*cos(0t)u(t) (另加选做)
假设式中A100,252,0252rad/s,将这些参数代入式中,对xa(t)进行傅立叶变换,得到Xa(j),并可画出它的幅频特性Xa(jf)~f;根据该曲线可以选择采样频率。这里给定采样频率如下:f=1 kHz,500Hz,100 Hz。 分别用这些采样频率形成时域离散信号x(n),打印三种采样频率的幅度曲线|X(ejω)|~ω。
clear all;
%用1000Hz采样频率
T1=1/1000; n=0:64/(1000*T1); A=100; a=25*sqrt(2.0);w0=25*sqrt(2.0)*pi; xn1=A*exp(-a*n*T1).*cos(w0*n*T1) .*cos(w0*n*T1);
Xk1=fft(xn1,1024); subplot(322);stem(n,xn1,'.'); grid on
xlabel('n');ylabel('x(n)');title('1000Hz采样 x(n)'); k=0:1023;wk=2*k/1024;
subplot(321);plot(wk,abs(Xk1));grid on;
xlabel('\omega/\pi');ylabel('|X(e^j^\omega)|');title('FT[x(n)]');
%用500Hz采样频率 T2=1/500; n2=0:64/(1000*T2);
A=100; a=25*sqrt(2.0);w0=25*sqrt(2.0)*pi; xn2=A*exp(-a*n2*T2).*sin(w0*n2*T2);
at
Xk2=fft(xn2,1024);
subplot(324);stem(n2,xn2,'.');grid on ;
title(' 500Hz采样 x(n2)');xlabel('n');ylabel('x(n2)'); k=0:1023;wk=2*k/1024;subplot(323);plot(wk,abs(Xk2));grid
on ;title('(a)FT[x(n2)]');xlabel('\omega/\pi');ylabel('|X(e^j^\omega)|'); %用100Hz采样频率 T3=1/100; n3=0:64/(1000*T3); A=100; a=25*sqrt(2.0);
w0=25*sqrt(2.0)*pi;xn3=A*exp(-a*n3*T3).*sin(w0*n3*T3);
Xk3=fft(xn3,1024); subplot(326);stem(n3,xn3,'.');grid; title('100Hz采样 x(n3)');
xlabel('n');ylabel('x(n3)');k=0:1023;wk=2*k/1024; subplot(325);plot(wk,abs(Xk3));grid on ;
title('(a)FT[x(n3)]');xlabel('\omega/\pi');ylabel('|X(e^j^\omega)|');