北京交通大学信号与系统时域分析.docx
- 文档编号:25319364
- 上传时间:2023-06-07
- 格式:DOCX
- 页数:18
- 大小:162.94KB
北京交通大学信号与系统时域分析.docx
《北京交通大学信号与系统时域分析.docx》由会员分享,可在线阅读,更多相关《北京交通大学信号与系统时域分析.docx(18页珍藏版)》请在冰豆网上搜索。
北京交通大学信号与系统时域分析
北京交通大学信号与系统时域分析
【研讨题目2】信号与系统时域分析专题研讨
【目的】
1.研究用离散方法近似计算连续信号的卷积积分;
2.通过分析近似计算卷积积分过程中出现的问题,锻炼学生分析问题和解决问题的能力;
【知识点】
信号时域分析,卷积积分,卷积和
【研讨题目】连续信号卷积积分的数值近似计算
两个连续信号的卷积积分定义为
为了能用数值方法进行计算,需对连续信号进行抽样。
记x[k]=x(kh[k]=h(k),为进行数值计算所选定的抽样间隔,可以证明连续信号卷积积分可近似的表示为
(1)
由式
(1)可知,可以利用Matlab提供的conv函数近似计算连续信号的卷积积分。
一、(*)理论分析
为了对近似计算的结果进行分析,用解析的方法计算下列卷积积分,推出卷积积分的解析表达式;
(1)时限信号卷积积分
x1(t)=u(t)-u(t-1),y1(t)=x1(t)*x1(t);
卷积结果为:
y1(t)=x1(t)*x1(t)=r(t)-2*r(t-1)+r(t-2)
(2)分段常数信号卷积积分
x2(t)=x1(t)+2x1(t-1)+x1(t-2),h2(t)=x1(t)-x1(t-1),y2(t)=x2(t)*h2(t);
卷积结果为:
y2(t)=x2(t)*h2(t)
=y1(t)+y1(t-1)-y1(t-2)-y1(t-3)
=r(t)-r(t-1)-2*r(t-2)+2*r(t-3)+r(t-4)-r(t-5)
(3)非时限信号卷积积分
x3(t)=u(t),h3(t)=e-tu(t),y3(t)=x3(t)*h3(t)
卷积结果为:
y3=x3(t)*h3(t)=[1-exp(-t)]*u(t)
二、(*)时限信号卷积积分的近似计算
取不同的△值,用Matlab函数conv近似计算卷积积分y1(t)并画出其波形,讨论的取值对计算结果的影响。
上图中,绿线为间隔0.01的结果,蓝线是间隔0.1结果,红线为实际结果,
由此可见:
时间间隔越小,与实际结果越接近。
附程序代码:
t1=[0:
0.01:
5];
t2=[0:
0.1:
5];
t=[0:
0.1:
5];
x1=1.*(t1>=0)-1.*(t1>=1);
x2=1.*(t2>=0)-1.*(t2>=1);
y1=convn(x1,x1);
y2=convn(x2,x2);
y=t.*[t>=0]-2*(t-1).*[t>=1]+(t-2).*[t>=2]
N1=length(y1);%length函数取y1的长度%
N2=length(y2);
plot(t,y,'r');
holdon;
plot(0:
0.01:
(N1-1).*0.01,y1*0.01,'g');
plot(0:
0.1:
(N2-1).*0.1,y2*0.1,'b');
axis([0501])
三、(**)分段常数信号卷积积分的Matlab计算
(1)若x2[k]={1,2,1,0;k=0,1,2},h2[k]={1,1;k=0,1},计算离散卷积y2[k]=x2[k]*h2[k];
y2[k]=x2[k]*h2[k]结果如下:
附程序代码:
x2=[1,2,1,0];h2=[1,-1];
y2=conv(x2,h2);
N=length(y2);
stem(0:
N-1,y2);
axis([08-11])
(2)比较y2(t)和y2[k],你发现了什么?
y2(t)的图像如下:
附程序代码:
t=[0:
0.1:
5];
y=t.*[t>=0]-(t-1).*[t>=1]-2*(t-2).*[t>=2]+2*(t-3).*[t>=3]+(t-4).*[t>=4]-(t-5).*[t>=5]
plot(t,y);
holdon;
axis([08-11])
y2(t)和y2[k]图像比较:
附程序代码:
x2=[1,2,1,0];h2=[1,-1];
y2=conv(x2,h2);
t=[0:
0.1:
5];
y=t.*[t>=0]-(t-1).*[t>=1]-2*(t-2).*[t>=2]+2*(t-3).*[t>=3]+(t-4).*[t>=4]-(t-5).*[t>=5]
N=length(y2);
stem(0:
N-1,y2);
holdon;
axis([08-11])
plot(t,y);
holdon;
axis([08-11])
比较两图可知,y2(t)与y2[t]的卷积积分相似,将y2[t]向右平移一个单位后,两图像波形重合,若在y2[t]最前面补零,或缩小抽样间隔,即可由y2[t]的卷积积分近似地求解y2(t)地卷积积分。
(3)对
(2)中发现象进行理论分析,根据理论分析的结果,给出用Matlab函数conv计算卷积积分y2(t)的方法并画出卷积积分y2(t)的波形;
x2(t)=u(t)+u(t-1)-u(t-2)-u(t-3),h2(t)=u(t)-2u(t-1)+u(t-2)
x2[k]={1,2,1,0;k=0,1,2},h2[k]={1,1;k=0,1}
当抽样间隔为0.1时,y2[t]比y2(t)超前一个单位,故在y2[t]最前面补零,采用plot即可画出y2(t)的正确波形。
另外,由二题研讨可知,将抽样间隔缩小(例如抽样间隔取0.01),采用plot画图也可以得到y2(t)的正确波形。
采用补零的方法画出y2(t)的波形为:
附程序代码:
x2=[0,1,2,1,0];h2=[1,-1];%在x2最前面补零
y2=conv(x2,h2);
N=length(y2);
plot(0:
N-1,y2);
axis([08-11]
(4)若分段常数的区间宽度不是1,应如何修改算法?
如图,若间隔为0.5时,图像及代码如下:
附程序代码:
x2=[1,2,1,0];h2=[1,-1];
y2=conv(x2,h2);
N=length(y2);
stem(0:
0.5:
(N-1).*0.5,y2);%红体为相比间隔为1的函数修改的部分
axis([08-11])
(5)完成了分段常数信号卷积积分的分析和计算后,你对y1(t)的近似计算方法有无新的认识?
可以由离散的卷积来近似的计算连续函数的卷积,但是要根据实际函数在0右边的积分的值,来确定离散函数向右偏移的格数,如可以取y1(t)的边界值先进行离散序列的卷积,如在用y2[t]来近似计算y2(t)时,由于y2(t)在0~1时,存在卷积积分的由0逐渐增长,到1时,存在着积分的变化,所以应将离散的图形向右平移一个单位。
同时由于连续序列卷积后也是连续的可以将相邻的离散点相连。
这样可以较快的计算出y1(t)的近似。
四、(**)非时限信号卷积积分的近似计算
近似计算若卷积积分y3(t)。
若出现问题请分析出现问题的原因,并给出一种解决问题的方案;根据提出的方案完成近似计算卷积分的程序;
用近似方法计算y3(t)的代码及结果如下。
当区间长度为20时:
附程序代码:
N=0.01;
t=0:
0.01:
20;
x=1*(t>=0);
y=exp(-t).*(t>=0);
yt=conv(x,y);
subplot(211);
n=0:
0.01:
40;
plot(n,N*yt);
axis([02002]);
xlabel('时间(s)');
ylabel('近似值yt(t)');
subplot(212);
yt1=(1-exp(-t)).*(t>=0);
plot(t,yt1);
axis([0inf02]);
xlabel('时间(s)');
ylabel('真实值yt(t)');
当区间长度为40时:
附程序代码:
N=0.01;
t=0:
0.01:
20;
x=1*(t>=0);
y=exp(-t).*(t>=0);
yt=conv(x,y);
subplot(211);
n=0:
0.01:
40;
plot(n,N*yt);
axis([04002]);
xlabel('时间(s)');
ylabel('近似值yt(t)');
subplot(212);
yt1=(1-exp(-t)).*(t>=0);
plot(t,yt1);
axis([0inf02]);
xlabel('时间(s)');
ylabel('真实值yt(t)');
出现这种情况的原因:
因为conv函数无法计算一个无穷的卷积,题目中虽然是算了exp(-t)的卷积,但是实际取的是(0,20)这个区间内的值,在做卷积的计算过程中,使用matlab对t进行了赋值,在赋值以外的点,被认为时0,所以在t>=0&t<=20这个区间内是没有问题的,但是t一但大于20两者的卷积就会有缺失,计算值就不在准确,t>20的部分就相当于是错误的,没有任何意义。
解决方法:
在绘制图形时,将绘制图形的坐标范围限定在t的取值范围之内,或绘制图形后去掉无效值。
五、(***)卷积函数conv函数选项的定义与应用研究
在新版MATLAB中,卷积函数conv提供了选项conv(A,B,’valid’),下面将研究conv(A,B,’valid’)的定义及应用。
(1)读MATLAB提供的关于conv的Help,给出卷积函数conv(A,B,’valid’)的定义。
设计一些简单的实验,验证你给出的定义。
你认为这样定义的卷积有何优缺点?
键入“helpconv”可知matlab对于valid的定义:
C=CONV(A,B,SHAPE)returnsasubsectionoftheconvolutionwithsize
specifiedbySHAPE:
'valid'-returnsonlythosepartsoftheconvolution
thatarecomputedwithoutthezero-paddededges.
LENGTH(C)isMAX(LENGTH(A)-MAX(0,LENGTH(B)-1),0).
【只返回那些卷积计算无零填充的边缘部分】
接下来利用A=[12345]和B=[123]对valid进行研究。
根据计算,A与B的卷积为[1,4,10,16,22,22,15]。
用conv和conv-vaild分别计算的结果如下:
结论:
由图像可得,在valid模式下,计算卷积只会计算A,B序列完全重合的部分,略去未完全重合的部分。
思考:
与conv不同,valid返回在卷积过程中,未使用边缘补0部分进行卷积计算,使得卷积出来的结果具有实际意义。
但同时valid有一个显著缺点,即卷积运算时,只会将B翻转与A比较,而不会自动选择短的序列进行翻转,当B的长度大于A时,无法得出卷积结果。
附代码:
A=[12345];
B=[123];
C=conv(A,B);
C1=conv(A,B,'valid');
subplot(211)
stem((1:
length(C))-1,C);
axis([-1,10,0,30]);
xlabel('conv(A,B))')
c=length(C)
subplot(212)
stem((1:
length(C1))-1,C1);
axis([-1,10,0,30]);
xlabel('conv(A,B,‘valid’)')
c1=length(C1)
附:
valid的原理图解:
图
(1)图
(2)
图(3)图(4)
图(5)图(6)
图(7)图(8)
图
(1)~(8)依次为b’序列(b序列翻转后)向右平移0~7个单位长度。
观察图像有:
图(3)时序列b’开始与序列a有重叠,但是图(3)图(4)两序列尚未完全重合,b’序列均存在未重合部分。
在valid模式下,它们因为缺少与之相乘的数,故b’序列未完全重合前不管重合部分,系统全部默认置零。
图(5),(6),(7)b’序列与序列a完全重合,这些部分可以计算卷积的值,分别为10,16,22,符合valid图像。
而从图(8)开始序列b’最右点移出序列a,两序列不再完全重合,系统再次完全置零。
(2)能否用conv(A,B,’valid’)完成conv(A,B)?
请给出解释,编程验证你的观点。
观察
(1)中结果,可以得到conv(A,B,'valid')的返回值长度比conv(A,B)少两倍的length(B)-1,所以其结果是conv(A,B)两端各除去length(B)-1个值所得的结果;
考虑卷积性质,B的’valid’卷积返回值长度应与conv(A,B)相等,数值也应相同,将A两端各补充length(B)-1个0得到A1,得到与conv(A,B)相同的值。
附代码:
A=[12345];
B=[123];
A1=[zeros(1,length(B)-1),A,zeros(1,length(B)-1)];
C=conv(A,B);
C1=conv(A1,B,'valid');
subplot(211)
stem((1:
length(C))-1,C);
axis([-1,10,0,30]);
xlabel('conv(A,B))')
c=length(C)
subplot(212)
stem((1:
length(C1))-1,C1);
axis([-1,10,0,30]);
xlabel('conv(A1,B,‘valid’)')
c1=length(C1)
(3)探索能否用conv(A,B,’valid’)解决非时限信号卷积积分的近似计算出现的问题?
若行,请给出解决问题的方案及实验结果。
若不行,请给出理由。
因函数conv(A1,B,'valid')可削除结果中两端length(y)-1个值,故可以将非时限卷积积分结果的无效值削除;根据卷积性质,只需在x左端插入length(y)-1个0,即可削除因t取值有限而造成的无效值而保留有效值。
例如重新计算y3(t)如下:
附代码:
t=0:
0.01:
20;
x=1*(t>=0);
y=exp(-t).*(t>=0);
x1=[zeros(1,length(y)-1),x];
yt=conv(x1,y,'valid');
subplot(211);
plot(N*([1:
length(yt)]),N*yt);
axis([03002]);
xlabel('Time');
ylabel('近似值yt(t)');
subplot(212);
yr=(1-exp(-t)).*(t>=0);
plot(t,yr);
axis([03002]);
xlabel('Time');
ylabel('真实值yr(t)');
(4)关于卷积conv(A,B,’valid’)的应用,你还有什么见解?
欢迎发表新想法,胆要大,不要怕犯错。
建议:
因为valid的缺点是必须是前一个序列长于后一个序列所以希望,增加一个判断,比较A,B长度,若B序列比A长交换A,B序列,其他算法不变,即可得到卷积结果
【温馨提示】
(1)研讨内容中标注的星号表示难度系数,(*)表示难度系数低,(**)表示难度系数中,(***)表示难度系数高。
【研讨要求】
(1)编写实现上述研讨内容的MATLAB仿真程序,画出程序运行结果图。
(2)结合信号与系统基本原理,对程序运行结果进行分析和讨论。
(3)在研讨过程中,若发现问题,要进行探究,并给出解决问题的方案。
(4)写出在本次研讨中自主学习内容,列出参考文献目录。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北京 交通大学 信号 系统 时域 分析