Incorrect continuous signal convolution values in Matlab

4 Ansichten (letzte 30 Tage)
Konstantinos
Konstantinos am 27 Jun. 2016
Kommentiert: Star Strider am 29 Jun. 2016
I am trying to convolve the following signals in Matlab:
and
for a=0.5. The result, say z(t) is:
So here is my Matlab code:
%Define initial signals
alpha = .5;
Ts = 0.01;
t_x = -5:Ts:5;
x = heaviside(t_x);
t_y = -5:Ts:5;
y = heaviside(t_y).*(alpha.^abs(t_y));
%Plot initial signals
figure(1)
plot(t_x,x);
xlabel('t');
ylabel('x(t)');
axis([min(t_x)-1 max(t_x)+1 min(x)-1 max(x)+1]);
figure(2)
plot(t_y,y);
xlabel('t');
ylabel('y(t)');
axis([min(t_y)-1 max(t_y)+1 min(y)-1 max(y)+1]);
%Convolution
z = Ts*conv(x,y);
t_z = min(t_x)+min(t_y):Ts:max(t_x)+max(t_y);
figure(3)
plot(t_z,z);
xlabel('t');
ylabel('z(t)');
axis([min(t_z)-1 max(t_z)+1 min(z)-1 max(z)+1]);
The problem is that the final signal that Matlab calculates has incorrect values for values of t greater than 5. I have checked this in detail and noticed that the signal is wrong for t > max(t_x). Here is the final plot:
What am I doing wrong?

Akzeptierte Antwort

Star Strider
Star Strider am 27 Jun. 2016
The convolution is actually defined only for your ‘t_x’ vector (that must be the same as ‘t_y’).
For example, if you have the Symbolic Math Toolbox, run this:
syms a t x y
assume(t>0)
assume(a>0)
x(t) = 1;
y(t) = a^t;
X = laplace(x);
Y = laplace(y);
Z = X*Y;
z = ilaplace(Z)
za = subs(z, a, 0.5);
figure(1)
fplot(za, [-5 5])
  6 Kommentare
Konstantinos
Konstantinos am 29 Jun. 2016
Bearbeitet: Konstantinos am 29 Jun. 2016
Anyway, I found the answer on some university notes. The problem is that I am trying to convolve two signals of infinite duration. In this case, the convolution is only valid in the interval that the first signal is defined at (this is a Matlab convention about the conv(...) function). You can see more inside the PDF. If you don't know Greek, you can check the code :) Thank you!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by