|
发表于 2009-5-4 20:31:36
|
显示全部楼层
运行meditor(在MATLAB命令行窗口键入>>edit指令或者通过“File”菜单中的“New”子菜单下的“M-File”命令或者单击工具栏上的新建按扭)
输入以下内容:
function [f,k]=sconv(f1,f2,k1,k2,p)
%计算连续信号卷积积分f(t)=f1(t)*f2(t)
% f: 卷积积分f(t)对应的非零样值向量
% k: f(t)的对应时间向量
% f1: f1(t)非零样值向量
% f2: f2(t)的非零样值向量
% k1: f1(t)的对应时间向量
% k2: 序列f2(t)的对应时间向量
% p: 取样时间间隔
f=conv(f1,f2); %计算序列f1与f2的卷积和f
f=f*p;
k0=k1(1)+k2(1); %计算序列f非零样值的起点位置
k3=length(f1)+length(f2)-2; %计算卷积和f的非零样值的宽度
k=k0:p:k3*p; %确定卷积和f非零样值的时间向量
subplot(2,2,1)
plot(k1,f1) %在子图1绘f1(t)时域波形图
title('f1(t)')
xlabel('t')
ylabel('f1(t)')
subplot(2,2,2)
plot(k2,f2) %在子图2绘f2(t)时波形图
title('f2(t)')
xlabel('t')
ylabel('f2(t)')
subplot(2,2,3)
plot(k,f); %画卷积f(t)的时域波形
h=get(gca,'position');
h(3)=2.5*h(3);
set(gca,'position',h) %将第三个子图的横坐标范围扩为原来的2.5倍
title('f(t)=f1(t)*f2(t)')
xlabel('t')
ylabel('f(t)')
将文件保存,扩展名设置为.m
然后在命令行中键入以下内容:
>> p=0.01;
>> k1=0:p:10;
>> f1=exp(-2*k1);
>> k2=0:p:4;
>> f2=ones(1,length(k2));
>> [f,k]=sconv(f1,f2,k1,k2,p)
(这是我刚做出来的一道题,你稍加修改就应该能用了。) |
|