信号与系统课程研究性学习报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《信号与系统》课程研究性学习报告指导教师薛健
时间
信号与系统的时域分析专题研讨
【目的】
(1) 加深对信号与系统时域分析基本原理和方法的理解。

(2) 学会利用MATLAB 进行信号与系统的分析。

(3) 培养学生自主学习能力,以及发现问题、分析问题和解决问题的能力。

【研讨题目】 题目1 连续信号通过系统的响应
一连续LTI 系统满足的微分方程为
(1) 已知)(e )(3t u t x t -=,试求该系统的零状态响应)(zs t y 。

(2) 用lsim 求出该系统的零状态响应的数值解。

利用(1)所求得的结果,比较不同的抽样间隔对数值解精度的影响。

(3)用命令
[x,Fsam,bits] = wavread('Yourn');
将硬盘上的语音文件 读入计算机。

用命令
sound(x,Fsam);
播放该语音信号;
(4)用命令
load model01
将磁盘文件读入计算机后,MATLAB 的workspace 中将会新增变量den 和num 。

den 表示微分方程左边的系数,变量num 表示微分方程右边的系数。

写出磁盘文件定义的微分方程;
(5)计算(3)中的信号通过(4)中系统的响应,播放系统输出的语音信号。

与处理前的信号比较,信号有何不同?能用已学知识解释所得结果吗?
【题目目的】
1.学会用计算机求解信号通过系统响应;
2.熟悉用Matlab 处理语音信号的基本命令;
【仿真结果】
(1) 解出y=*exp(-3*t)+3*exp(-2*t)*exp(-t)
【结果分析】
由图可知,抽样间隔越小,精度越高。

【仿真结果】
(3)
【结果分析】
杂音音频
可以听出与看出高频部分存在杂音。

【仿真结果】
(4)
>> Untitled3
den=
den= +04
den= +08
den= +12
den= +17
den= +20
den= +24
num=
num=
num= +07
num=
num= +16
num= +05
num= +24
【仿真结果】
(5)
【结果分析】
杂音部分被去掉,音乐恢复正常。

该系统有去噪的效果相当于一个低通录波器,高频的噪声信号被滤去。

【研讨题目】题目2连续信号卷积积分的数值近似计算
两个连续信号的卷积积分定义为
为了能用数值方法进行计算,需对连续信号进行抽样。

记x[k]=x(k?), h[k]=h(k?), ?为进行
数值计算所选定的抽样间隔,则可证明连续信号卷积积分可近似的表示为
(Δ)Δ([][])
y k x k h k
≈⨯*(1)
由式(1)可知,可以利用Matlab提供的conv函数近似计算连续信号的卷积积分。

设x(t)=u(t)?u(t?1),h(t)=x(t)?x(t),
(a)为了与近似计算的结果作比较,用解析法求出y(t)=x(t)?h(t);
(b)用不同的?计算出卷积积分的数值近似值,并与?a?中的理论结果进行比较;
(c)证明(1)式成立;
(d)若x(t)和h(t)不是时限信号,如x(t)=u(t),h(t)=e?t u(t),,则用上面的方法进行近似计算是否会遇到问题?若出现问题请分析出现问题的原因,并给出一种解决问题的方案;根据提出的方案完成近似计算卷积分的子程序;
(e)卷积函数conv新选项的定义与应用研究
在新版MATLAB中,卷积函数conv提供了选项conv(A, B,’valid’),下面将研究conv(A, B,’valid’ )的定义及应用。

(1) 读MATLAB提供的关于conv的Help,给出卷积函数conv(A, B,’valid’ )的定义。

设计一些简单的实验,验证你给出的定义。

你认为这样定义的卷积有何优缺点?
(2)能否用conv(A, B,’valid’ )完成conv(A, B )?请给出解释,编程验证你的观点。

(3) 探索能否用conv(A, B,’valid’ )解决(d) 中出现的问题?若行,请给出解决问题的方案及实验结果。

若不行,请给出理由。

(4)关于卷积conv(A, B,’valid’ )的应用,你还有什么见解?欢迎发表新想法,胆要大,不要怕犯错。

【题目目的】
1.学会用计算机近似计算连续信号的卷积积分;
2.分析在计算过程中出现的问题并提出解决方案;
【题目分析】
(a)
)1
(
*)(
2-)1
(
*)1
(
)(
*)(
)(
*)(
)(-
-
-
+
=
=t
u
t
u
t
u
t
u
t
u
t
u
t
x
t
x
t
h)1
(
2-)2
(
)(-
-
+
=t r
t r
t r
【仿真结果】
绿线是间隔???的结果,蓝线是间隔????结果,红线是实际结果,可见时间间隔越小,精确度越高。

(c)证明:
【仿真结果】
(d)
【结果分析】
卷积结果在t=10时刻发生突变,与实际结果不符,原因是t只取0-10这一范围,在大于10区域matlab默认信号为0,造成突变。

解决方案,根据实际需要确定t的范围,取坐标时只显示有实际含义的范围内的曲线。

【仿真结果】
(2)
【结果分析】
计算卷积只会计算序列完全重合的部分,略去matlab对不重合部分默认置0对结果可能造成的影响。

valid有一个显着缺点,卷积运算时,只会将B翻转与A,比较,而不会自动选择短的序列进行翻转,当B的长度大于A时,无法得出卷积结果。

【仿真结果】
(3)可以。

若B的长度为n,则在A 后面添加n-1个0。

(3b)在A前加n-1个0,使用valid
(4)可以编一个选择程序,比较A,B长度,若B序列比A长就交换A,B序列,这样就可以算出卷积。

附录代码
(2)t1=0::5; t2=0::5; t3=0::5;
sys=tf([2 1],[1 3 2]); x1=exp(-3*t1); x2=exp(-3*t2); x3=exp(-3*t3);
y1=lsim(sys,x1,t1); y2=lsim(sys,x2,t2); y3=lsim(sys,x3,t3);
y=*exp(-3*t1)+3*exp(-2*t1)*exp(-t1);
plot(t1,y1,'b',t2,y2,'r',t3,y3,'c',t1,y,'k');
legend('dt=','dt=','dt=');
title('零状态响应');
xlabel('t');ylabel('y');
(3)
[x,Fsam,bits] = wavread('Yourn')
sound(x,Fsam)
sl=length(x);
t=(0:sl-1)/Fsam;
wavwrite(x,Fsam,'');
plot(t,x);
title('杂音音频');
(4)
load model01
fprintf('den= %s\n',den);
fprintf('num= %s\n',num);
(5)
[x,Fsam,bits] = wavread('Yourn');
load model01;
sys = tf(num,den);
t=linspace(0,20,220500)';
y=lsim(sys,x,t);
sound(y,Fsam);
(b)
t=0::5;
t1=0::5;
t2=0::5
x1=[t1>=0]-[t1>=1];
x2=[t2>=0]-[t2>=1];
ht1=convn(x1,x1);
y1=convn(x1,ht1);
ht2=convn(x2,x2);
y2=convn(x2,ht2);
y=1/2*t.*t.*[t>=0]-3/2*(t-1).*(t-1).*[t>=1]+3/2*(t-2).*(t-2).*[t>=2]-1 /2*(t-3).*(t-3).*[t>=3];
N1=length(y1);
N2=length(y2);
plot(t,y,'r');
plot((0:N2-1)*,y2**,'b');
plot((0:N1-1)*,y1**,'g');
axis([0 5 0 1]);
(d)
dt=;
t=0:dt:10;
x=[t>=0];
y=exp(-t).*[t>=0];
y1=convn(x,y);
L=length(y1);
plot((0:L-1)*dt,y1*dt*dt);
(2)
y=[1 1 1];
x=[0 1 1 1 1 0];
z=conv(x,y);
z1=conv(x,y,'valid');
a=length(z);
a1=length(z1);
t=0:a-1;
t1=0:a1-1;
subplot(211)
stem(t,z);
axis([-1 8 -1 6]);
subplot(212)
stem(t1,z1);
axis([-1 8 -1 6])
title('h(t)=y*x');
(3)
y=[1 1 1];
x=[0 1 1 1 1 0];
n=length(y);
x1=[zeros(1,n-1),x,zeros(1,n-1)];
z=conv(x1,y,'valid')
a=length(z);
t=0:a-1;
stem(t,z);
axis([-1 8 -1 6]);
(3)
y=[1 1 1];
x=[0 1 1 1 1 0];
n=length(y);
x1=[zeros(1,n-1),x,zeros(1,n-1)];
z=conv(x1,y,'valid')
a=length(z);
t=0:a-1;
stem(t,z);
axis([-1 8 -1 6]);
title('h(t)=y*x');
(3b)
dt=;
t=0:dt:10;
x=1.*[t>=0];
y=exp(-t).*[t>=0];
L1=length(x);
a=zeros(1,L1);
x=[a,x];
y1=conv(x,y,'valid');
L=length(y1);
plot((0:L-1)*dt,y1*dt*dt);
title('h(t)=y*x');。

相关文档
最新文档