f3=subs(f2,t,-t);
subplot(2,2,1);ezplot(f,[-8,8]);grid on; subplot(2,2,2);ezplot(f1,[-8,8]);grid on; subplot(2,2,3);ezplot(f2,[-8,8]);grid on; subplot(2,2,4);ezplot(f3,[-8,8]);grid on;
sin(t)/t11sin(t+3)/(t+3)0.50.50-505tsin(2 t+3)/(2 t+3)0-505t-sin(2 t-3)/(-2 t+3)0.80.60.40.20-0.2-50t50.80.60.40.20-0.2-50t5
(三)卷积运算 Y=conv(x,h )
实现x,h 二个序列的卷积,假定都是从 n=0 开始.Y 序列的长度为 x,h 序列的长度之和再减1. 例
1:二个方波信号的卷积
y1=[ones(1,20),zeros(1,20)]; y2=[ones(1,10),zeros(1,10)]; y=conv(y1,y2); n1=1:length(y1); n2=1:length(y2); L=length(y);
subplot(3,1,1);plot(n1,y1);axis([1,L,0,2]); subplot(3,1,2);plot(n2,y2);axis([1,L,0,2]); n=1:L;
subplot(3,1,3);plot(n,y);axis([1,L,0,20]);
21021020100510152025303540455055510152025303540455055510152025303540455055
例
2:二个指数信号的卷积.
t=0:0.001:1; y1=exp(-6*t); y2=exp(-3*t); y=conv(y1,y2); l1=length(y1); l2=length(y2); l=length(y);
subplot(3,1,1);plot(t,y1); subplot(3,1,2);plot(t,y2); t1=0:0.001:2;
subplot(3,1,3);plot(t1,y);
10.5010.5010050000.10.20.30.40.50.60.70.80.9100.10.20.30.40.50.60.70.80.9100.20.40.60.811.21.41.61.82
三、实验内容
1. 自选二个简单的信号,进行加、乘、卷积运算. 加乘:
y1=[2,4,2,1,4,0,0]; y2=[2,2,1,1,3,2,0]; n=1:length(y1);
subplot(2,2,1);stem(n,y1); subplot(2,2,2);stem(n,y2); subplot(2,2,3);stem(n,y1+y2); subplot(2,2,4);stem(n,y1.*y2);
4321013202468002468864201510502468002468
卷积:
y1=[2,4,2,1,4,0,0];
y2=[2,2,1,1,3,2,0]; y=conv(y1,y2); n1=1:length(y1); n2=1:length(y2); L=length(y);
subplot(3,1,1);plot(n1,y1);axis([1,L,0,5]); subplot(3,1,2);plot(n2,y2);axis([1,L,0,5]); n=1:L;
subplot(3,1,3);plot(n,y);axis([1,L,0,40]);
42024681012420246810124020024681012
2. 自选一个简单的信号进行反褶、平移、尺度变换运算.
syms t;
f=sym('cos(t)/t'); f1=subs(f,t,t+3); f2=subs(f1,t,2*t); f3=subs(f2,t,-t);
subplot(2,2,1);ezplot(f,[-8,8]);grid on; subplot(2,2,2);ezplot(f1,[-8,8]);grid on; subplot(2,2,3);ezplot(f2,[-8,8]);grid on; subplot(2,2,4);ezplot(f3,[-8,8]);grid on;
四、实验要求 1.预习实验原理;
2.对实验内容编写程序(M文件),上机运行; 3.绘出运算或变换后信号的波形.
cos(t)/t0.50-0.5-505tcos(2 t+3)/(2 t+3)0.40.20-0.2-0.4-505tcos(t+3)/(t+3)0.50-0.5-505tcos(2 t-3)/(-2 t+3)0.40.20-0.2-0.4-505t
五、思考题
1. Matlab的仿真特点 在离散传利叶转换中,由於处理的对象是一些序列,因此非常这合使用电脑来担任计算的工作,而 MathWorks, Inc. 所发展的 MATLAB 数学运算软体,即是这方面非常强而有力的电脑软体,在 MATLAB 上面执行一些数列或矩阵的运算非常方便,而它的程式结构有点类似 BASIC或 C 程式,写起来十分平易近人,而其函式的呼叫又很间单,再加以目前各种视窗上的版本都已推出,编辑程式,执行、观看结果和列印,都可轻鬆的透过视窗的切换及下拉式功能来完成,更值得特别一提是MATLAB 的工具箱 (TOOLBOX) 有 SIGNAL 及 IMAGE 两项法宝,对於我们学习、数位信号处理的过理中,能够提供完备的的辅助。唯一较遗憾的是目前 MATLAB 上面建立的程式仍然较难直接与一些界面卡(如影像处理卡)相互钩通,因此如果我们想利用它来从事实际上的影像处理,必须先在其他工作环境下,将影像抓取进来,存成图档后再进入MATLAB 中,将图档呼叫出来作深入的分析。另一点美中不足的地方是,虽然 MATLAB 在从事一些本身的内建函式运算时速度很快,但是如果是执行我们所建立的一些外部函式运算时速度却相当慢,因此,如果从事语音及影像分析时,大量的计算工作将使得电脑花费不少处理的时间,这一点也使得它变得较為不切实际,而无法直接运用於线上的数位信号处理。
查看conv卷积的函数实现过程、原理,试用C语言编写调试。 function a=myconv(b,c) bs=size(b); cs=size(c); i=any(bs-cs); if i
error('error') end
i=any(~(bs-1)); if ~i
error('error') end ko=0;
if bs(1)>bs(2) b=b'; c=c'; ko=1; end
bs=size(b);

