数字信号处理实验报告
实验一: 信号、 系统及系统响应
一、实验目的:
(1) 熟悉连续信号经理想采样前后的频谱变化关系, 加深对时域采样定理的理解。
(2) 熟悉时域离散系统的时域特性。
(3) 利用卷积方法观察分析系统的时域特性。
(4) 掌握序列傅里叶变换的计算机实现方法, 利用序列的傅里叶变换对连续信号、 离散信号及系统响应进行频域分析。
二、实验原理与方法:
(1) 时域采样。
(2) LTI系统的输入输出关系。
三、 实验内容、步骤
(1) 认真复习采样理论、 离散信号与系统、 线性卷积、 序列的傅里叶变换及性质等有关内容, 阅读本实验原理与方法。
(2) 编制实验用主程序及相应子程序。
① 信号产生子程序, 用于产生实验中要用到的下列信号序列:
a. xa(t)=A*e^-at *sin(Ω0t)u(t)
A=444.128;a=50*sqrt(2)*pi;
b. 单位脉冲序列:xb(n)=δ(n)
c. 矩形序列: xc(n)=RN(n), N=10
② 系统单位脉冲响应序列产生子程序。 本实验要用到两种FIR系统。
a. ha(n)=R10(n);
b. hb(n)=δ(n)+2.5δ(n-1)+2.5δ(n-2)+δ(n-3)
③ 有限长序列线性卷积子程序
用于完成两个给定长度的序列的卷积。 可以直接调用MATLAB语言中的卷积函数conv。 conv用于两个有限长度序列的卷积, 它假定两个序列都从n=0 开始。 调用格式如下:y=conv (x, h)
四、实验内容
调通并运行实验程序, 完成下述实验内容:
① 分析采样序列的特性。
a. 取采样频率fs=1 kHz, 即T=1 ms。
b. 改变采样频率, fs=300 Hz, 观察|X(ejω)|的变化, 并做记录(打印曲线); 进一步降低采样频率, fs=200 Hz, 观察频谱混叠是否明显存在, 说明原因, 并记录(打印)这时的|X(ejω)|曲线。
② 时域离散信号、 系统和系统响应分析。
a. 观察信号xb(n)和系统hb(n)的时域和频域特性; 利用线性卷积求信号xb(n)通过系统hb(n)的响应y(n), 比较所求响应y(n)和hb(n)的时域及频域特性, 注意它们之间有无差别, 绘图说明, 并用所学理论解释所得结果。
b. 观察系统ha(n)对信号xc(n)的响应特性。
③ 卷积定理的验证。
五、思考题
(1) 在分析理想采样序列特性的实验中, 采样频率不同时,相应理想采样序列的傅里叶变换频谱的数字频率度量是否都相同? 它们所对应的模拟频率是否相同? 为什么?
(2) 在卷积定理验证的实验中, 如果选用不同的频域采样点数M值, 例如, 选M=10和M=20, 分别做序列的傅里叶变换, 求得的结果有无差异?为什么?
六、参考资料
数字信号处理教程——Matlab释义与实现 第二版,陈怀琛著,电子工业出版社,2008年
七、实验程序及结果
本实验使用自定义函数的方法产生信号:
门函数:
function[y,n]=gate(np,ns,nf)
if ns>np|ns>nf|np>nf
error(matlab求傅里叶变换'ÊäÈëλÖòÎÊý²»Âú×ãns<=np<=nf');
else
n=[ns:nf];
y=(n>=0&n<np);
end
冲击函数:
function[y,n]=impseq(np,ns,nf)
if ns>np|ns>nf|np>nf
error('ÊäÈëλÖòÎÊý²»Âú×ãns<=np<=nf');
else
n=[ns:nf];
y=[(n-np)==0];
end
时域函数:
function[y,ts]=sig(t0,tp,t1);
A=444.128;a=50.*sqrt(2).*pi;w0=50.*sqrt(2).*pi;
ts=t0:tp:t1;
y=A.*exp(-a.*ts).*sin(w0.*ts).*(ts>=0);
;hb=impseq(0,0,10)+2.5.*impseq(1,0,10)+2.5.*impseq(2,0,10)+impseq(3,0,10);
;[ha,N]=gate(10,0,10);
第一部分主程序:
[y1,t1]=sig(0,0.001,1);
%t1=0:0.001:1;
%y1=0.5.*sin(2.*pi.*15.*t1);
figure;
plot(t1,y1);
axis([0 0.15 -10 150]);
title('f=1000ʱÓòÐźÅ');
figure;
f=-500:500;
yy1=fftshift(fft(y1));
plot(f,abs(yy1));
title('f=1000ƵÆ×');
[y2,t2]=sig(0,1/300,1);
figure;
plot(t2,y2);
axis([0 0.15 -10 150]);
title('f=300ʱÓòÐźÅ');
figure;
yy2=fftshift(fft(y2));
plot(-150:150,abs(yy2));
title('f=300ƵÆ×');
[y3,t3]=sig(0,0.02,1);
figure;
plot(t3,y3);
title('f=200ʱÓòÐźÅ');
axis([0 0.15 -8 5]);
figure;
yy3=fftshift(fft(y3));
plot(-25:25,abs(yy3));
title('f=200ƵÆ×');
第二部分主程序:
xb=impseq(0,0,100);
figure;
stem(0:length(xb)-1,xb);
axis([-1,3,0,2]);
figure;
y1=fft(xb);
plot(0:length(y1)-1,y1);
hb=impseq(0,0,100)+2.5.*impseq(1,0,100)+2.5.*impseq(2,0,100)+impseq(3,0,100);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论