连续时间信号卷积运算的MATLAB实现
一、实验目的
(1)理解掌握卷积的概念及物理意义。
(2)理解单位冲激响应的概念及物理意义。
二、实验原理
根据前述知识,连续信号卷积元素按定义为
?f?t??f1?t??f2?t?????f1???f2?t???d?
卷积计算可以通过信号分段求和来实现,即
??f?t??f1?t??f2?t?????f1???f2?t???d??lim??0?k???f1?k???f2?t?k????
f?t?f?n?? 如果只求当t?n?(n为整数)时的值,则由上式可得
??f?n?????k???f1?k???f2?n??k??????k???f1?k???f2???n?k?????
式中的k???匀抽样的离散序列
f1?k??f?t??f1?k???f2?n??k??实际上就是连续信号
和
f2?k??f1?t?和
f2?t?经等时间间隔?均就是卷积积分的结
的卷积和。当?足够小时,
f?n??果——连续时间信号的较好的数值近似。
三、实验内容
1、实验参考程序 以下是MATLAB实现连续信号卷积的通用函数sconv()。 function[f,k]=sconv(f1,f2,k1,k2,p) f=conv(f1,f2); f=f*p;
k0=k1(1)+k2(1);
k3=length(f1)+length(f2)-2; k=0:p:k3*p; subplot(2,2,1) plot(k1,f1) title('f1(t)') xlabel('t') ylabel('f1(t)') subplot(2,2,2) plot(k2,f2) title('f2(t)') xlabel('t')
ylabel('f2(t)') subplot(2,2,3) plot(k,f);
h=get(gca,'position') h(3)=2.5*h(3);
set(gca,'position',h)
title('f(t)=f1(t)*f2(t)') xlabel('t') ylabel('f(t)') end
已知两连续时间信号如图所示,使用MATLAB求时域波形图。
实现上述过程的MATLAB命令如下: p=0.5; k1=0:p:2; f1=0.5*k1; k2=k1; f2=f1;
[f,k]=sconv(f1,f2,k1,k2,p)
运行得出结果。上述命令绘制的波形图在图中示出:
f?t??f1?t??f2?t?f?t?,并绘出的
图1.1
以上给出了时间间隔为p=0.5时的处理效果。而图1.2给出了抽样时间间隔p=0.05时的处理结果。可见,当抽样时间p足够小时,函数sconv()的计算结果就是连续时间卷积
f?t??f1?t??f2?t?的较好数值近似。
图1.2
2、习题练习(P34-1.11(a),(b))
已知两连续时间信号如图所示,使用MATLAB求时域波形图。
(a)输入以下MATLAB命令: p=0.001;
k1=0:p:2;
f1=heaviside(k1)-heaviside(k1-1); k2=0:p:2; f2=0.5*k2;
[f,k]=sconv(f1,f2,k1,k2,p
f?t??f1?t??f2?t?,并绘出
f?t?的
运行得出结果:
(b)输入以下MATLAB命令: p=0.001; k1=-1:p:1; f1=-abs(k1)+1; k2=0:p:2;
f2=heaviside(k1)-heaviside(k1-1); [f,k]=sconv(f1,f2,k1,k2,p) 运行得出结果:
四、实验心得
通过本次实验我学会使用MATLAB软件,并用软件实现了的连续时间信号的卷积运算,且进一步理解了卷积的概念和物理意义,对我以后学习卷积知识有了很大的帮助。