数字信号处理实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一: 系统及响应时域采样及频域采样
1. 实验目的
(1)掌握用卷积求系统响应及卷积定理的验证;
(2)掌握连续信号经理想采样前后的频谱变化关系, 加深对时域采样定理的理解。
(3)掌握频域采样引起时域周期化概念, 加深对频域采样定理的理解。 (4) 掌握序列傅里叶变换的计算机实现方法, 利用序列的傅里叶变换对连续信号、离散信号及系统响应进行频域分析。
3. 实验内容及步骤
(1) 认真复习卷积定理、 时域采样和频域采样理论。 (2) 编制实验用主程序及相应子程序。 ①系统单位脉冲响应序列产生子程序。
有限长序列线性卷积子程序,
用于完成两个给定长度的序列的卷积。
可以直接调用MATLAB 语言中的卷积函数conv 。 conv 用于两个有限长度序列的卷积,它假定两个序列 都从n=0开始。调用格式如下: y=conv (x, h) ② 卷积定理的验证。
(3)时域采样定理的验证:信号产生子程序, 用于产生实验中要用到的下列信号序列:
x a (t)=Ae -at sin(Ω0t)u(t) 进行采样, 可得到采样序列
x a (n)=x a (nT)=Ae -anT sin(Ω0nT)u(n), 0≤n<50
其中A 为幅度因子, a 为衰减因子, Ω0是模拟角频率, T 为采样间隔。 这些参数都要在实验过程中由键盘输入, 产生不同的x a (t)和x a (n)。
>> %1时域采样序列分析 A=400;a=200;w=200; n=0:50-1;fs=1000;
xa=A*exp((-a)*n/fs).*sin(w*n/fs); k=-200:200;w=(pi/100)*k;
Xk=fft(xa,length(k));magX=abs(Xk);angX=angle(Xk); subplot(2,1,1);
stem(n,xa,'.');xlabel('n');ylabel('xa(n)'); title('信号的类型');
)()(10n R n h a =)
3()2(5.2)1(5.2)()(-+-+-+=n n n n n h b δδδδ1,,2,1,0,)()()(-==M k e H e X e Y k k k j j a j ωωω
subplot(2,1,2);plot(w/pi,magX);xlabel('w/pi'); ylabel('|Yjw|');title('Y(|jw|)');
5
10
15
20
2530
35
40
45
50
n x a (n )
信号的类型
-2.5
-2-1.5-1-0.5
00.51 1.52
0500
1000
w/pi
|Y j w |
Y(|jw|)
(4)频域采样定理的验证:
>> %1时域采样序列分析fs=1000 A=400; a=200; w=200;;
ts=64*10^(-3); fs=1000;T=1/fs;
n=0:ts/T-1; xn=A*exp((-a)*n/fs).*sin(w*n/fs); Xk=fft(xn);
subplot(3,2,1);stem(n,xn);xlabel('n,fs=1000Hz'); ylabel('xn');title('xn'); subplot(3,2,2);plot(n,abs(Xk));xlabel('k,fs=1000Hz'); title('|X(k)|');
20
406080
n,fs=1000Hz
x n
xn
20
406080
0500
1000k,fs=1000Hz
|X (k)|
51015
n,fs=200Hz
x n
xn
51015
0100
200k,fs=200Hz |X
(k)|
10
203040
n,fs=500Hz
x n
xn
10
203040
0500
k,fs=500Hz
|X (k)|
>> %频域采样定理验证
M=26;N=32;n=0:M;n1=0:13;x1=n1+1; n2=14:26;x2=27-n2; x=[x1,x2];Xk=fft(x,512); X32k=fft(x,32);
k=0:511;w=(pi/512)*k;
subplot(321);stem(n,x);xlabel('n'); ylabel('xn');axis([0,31,0,15]);
subplot(322);plot(w,abs(Xk));xlabel('k'); ylabel('|X(k)|');axis([0,1,0,200]) X16k=X32k(1:2:N);
x32n=ifft(X32k);x16n=ifft(X16k,16); k1=0:31;k2=0:15;
subplot(323);stem(k1,abs(X32k));xlabel('k'); ylabel('X32k');axis([0,31,0,200]);
subplot(325);stem(k2,abs(X16k));xlabel('k'); ylabel('|X(k)|');axis([0,15,0,200]) n=0:31;
subplot(324);stem(n,abs(x32n));xlabel('n'); ylabel('|x(n)|');axis([0,31,0,15]) n1=0:15;
subplot(326);stem(n1,abs(x16n));xlabel('n'); ylabel('|x(n)|');axis([0,31,0,15])