How should I fix my convolutional integral

3 views (last 30 days)
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 Comment
Matt J
Matt J on 9 Mar 2020
Edited: Matt J on 9 Mar 2020
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.

Sign in to comment.

Accepted Answer

Matt J
Matt J on 9 Mar 2020
Edited: Matt J on 9 Mar 2020
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
  3 Comments

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!