How should I fix my convolutional integral
1 次查看(过去 30 天)
显示 更早的评论
Hello all,
Actually, I am trying to convolve two functions (f and y)using the following MATLAB code:
close all;
clear all;
clc;
%set time vector
t0=0;
tf=100;
N=10000;
dt=(tf-t0)/N;
t=t0:dt:tf;
T0=60;
alpha=1;
beta=0.01;
%construct the firxt part of the convolution
for i=1:length(t)
if(t(i)<=T0)
y(i)=0;
else
y(i)=alpha+beta*(t(i)-T0);
end
end
%plot y(t)
subplot(1,2,1);
plot(t,y,'LineWidth',2);
title('y(t)');
%Second function of the convolution
f2= 0.08787*exp(-((t-63.08)/1.593).^2);
%Convolution of these 2 functions
z=conv(y,f2,'full');
con = z*dt;
subplot(1,2,2);
plot(t,f2,'LineWidth',2);
title('f2');
t = (1:length(con))*dt ;
hold on;
plot(t,con,'LineWidth',2);
I tried to use the guidlines in the following link to run a full convolutional integral :
Here are my results:
This result seems not to be reasonable because both my functions start rising at x=60 but my convolution starts rising at x=120. Can someone helps me with this problem.
1 个评论
Matt J
2020-3-9
编辑:Matt J
2020-3-9
This result seems not to be reasonable because both my functions start rising at x=60
There's nothing unreasonable about that. That is theoretically what should happen if both functions start at t=60. For the convolution result to start at t=60, you need one of the signals to start at t=0.
采纳的回答
Matt J
2020-3-9
编辑:Matt J
2020-3-9
This might be what you want,
subplot(1,2,1);
ty=t;
plot(ty,y,'LineWidth',2);
title('y(t)');
%Second function of the convolution
f2= 0.08787*exp(-((t-63.08)/1.593).^2);
%Convolution of these 2 functions
z=conv(y,f2(find(f2,1):end),'same');
con = z*dt;
subplot(1,2,2);
plot(ty,f2,'LineWidth',2);
title('f2');
hold on;
tc=linspace(0,1,numel(con));
tc=tc/tc(2)*dt;
plot(tc,con,'LineWidth',2);
hold off
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Pulsed Waveforms 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!