匿名用户
1级
2013-12-01 回答
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:k0+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)')
i=0;
for k1=-2:0.001:2
if ( k1<1&&k1>-1)
i=i+1;
f1(i)=k1;
end
end
k1=-0.999:0.001:0.999;
k2=k1;
f2=2.*f1;
T=0.001;
[y,k]=sconv(f1,f2,k1,k2,T);
subplot(3,1,1)
plot(k1,f1);
axis([-2,2,0,2.2])
title('f1')
subplot(3,1,2)
plot(k2,f2);
axis([-2,2,0,2.2])
title('f2')
subplot(3,1,3)
plot(k,fy);
title('y=f1*f2');
axis([min(k),max(k),min(y),max(y)+.02])
追问:
把它直接复制到matlab里面运行还是有下面的错误
??? function [f,k]=sconv(f1,f2,k1,k2,p)
|
Error: Function definitions are not permitted at the prompt or in scripts.