2.1 实现卷积 ,其中:
m21.m
p=0.01; % 取样时间间隔
nf=0:p:1; % f(t)对应的时间向量
f=2*((nf>=0)-(nf>=1)); % 序列 f(n)的值
nh=0:p:2; % h(t)对应的时间向量
h=(nh>=0)-(nh>=2); % 序列 h(n)的值
[y,k]=sconv(f,h,nf,nh,p); % 计算 y(t)=f(t)*h(t)
subplot(3,1,1),stairs(nf,f); % 绘制 f(t)的波形
title('f(t)');axis([0 3 0 2.1]);
subplot(3,1,2),stairs(nh,h); % 绘制 h(t)的波形
title('h(t)');axis([0 3 0 1.1]);
subplot(3,1,3),plot(k,y); % 绘制 y(t)=f(t)*h(t)的波形
title('y(t)=f(t)*h(t)');axis([0 3 0 2.1]);
子程序 sconv.m
% 此函数用于计算连续信号的卷积 y(t)=f(t)*h(t)
function [y,k]=sconv(f,h,nf,nh,p)
% y:卷积积分 y(t)对应的非零样值向量
% k:y(t)对应的时间向量
% f:f(t)对应的非零样值向量
% nf:f(t)对应的时间向量
% h:h(t)对应的非零样值向量
% nh:h(t)对应的时间向量
% p:取样时间间隔
y=conv(f,h); % 计算序列 f(n)与 h(n)的卷积和 y(n)
y=y*p; % y(n)变成 y(t)
left=nf(1)+nh(1) % 计算序列 y(n)非零样值的起点位置
right=length(nf)+length(nh)-2 % 计算序列 y(n)非零样值的终点位置
k=p*(left:right); % 确定卷积和 y(n)非零样值的时间向量
运行结果: