필터 지우기
필터 지우기

Incorrect continuous signal convolution values in Matlab

조회 수: 1 (최근 30일)
Konstantinos
Konstantinos 2016년 6월 27일
댓글: Star Strider 2016년 6월 29일
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?

채택된 답변

Star Strider
Star Strider 2016년 6월 27일
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
Konstantinos
Konstantinos 2016년 6월 29일
편집: Konstantinos 2016년 6월 29일
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!
Star Strider
Star Strider 2016년 6월 29일
My pleasure!

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Multirate Signal Processing에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!

Translated by