Different vector length on plotting convolution of Hanning signal with Dirac Delta signal
2 views (last 30 days)
Show older comments
Hello all,I would like to ask a question about different vector length on plotting convolution of Hanning signal with Dirac Delta signal
I have created a Cosine signal (HANNING) signal which looks like below:
Also, I have created a Dirac Delta signal which looks like below:
I would like to take the Dirac Delta time length to show my convolution result. However, it prompts me "Vectors must be the same length" error. At the end, I have to use Hanning signal time length to show my convolution result which looks like below:
I believe this plot is not really shows the complete picture of my convolution result. Therefore, I would like to ask what can I do to fix this? Below is my code for the reference:
close all;
clear all;
clc;
dt = 0.1;
xt= -1+2:dt:1+2;
yt= -5:dt:5;
%construction of the Cosine signal (HANNING) function as x1(t)
x = 0.5*[1+cos(pi*xt)];
%construction of dirac pulse
y= dirac(yt)+dirac(yt-1)+dirac(yt-2);
idx = y == Inf; % find Infinite Value
y(idx)=1; %set Inifinite value to finite Value=1
figure;
plot(yt,y,'linewidth',2);
set(gca,'fontsize',14,'fontweight','bold');
grid on;
xlabel('t');
ylabel('x3(t)');
title('Dirac pulse x3(t)');
hold on
figure;
plot(xt,x,'linewidth',2);
set(gca,'fontsize', 14, 'fontweight', 'bold');
grid on;
xlabel('t');
ylabel('x1(t)');
title('Cosine signal (HANNING) Function x1(t)');
z = conv(x,y,'same');
hold on
figure;
plot(xt,z,'linewidth',2);
set(gca,'fontsize', 14, 'fontweight', 'bold');
grid on;
title('Convolution of x1(t)and x3(t)');
xlabel('t');
ylabel('y(t)= x1(t)*x3(t)');
hold on;
0 Comments
Accepted Answer
Paul
on 30 Nov 2021
It's easier to make it work if the signals are defined over the same time vector. And use the full convolution.
dt = 0.1;
xt= -1:dt:5; % new
yt= -1:dt:5; % new
%construction of the Cosine signal (HANNING) function as x1(t)
x = 0.5*[1+cos(pi*xt)].*(xt>=1 & xt<=3); % define the window
%construction of dirac pulse
y= dirac(yt)+dirac(yt-1)+dirac(yt-2);
idx = y == Inf; % find Infinite Value
y(idx)=1; %set Inifinite value to finite Value=1
figure;
plot(yt,y,'linewidth',2);
set(gca,'fontsize',14,'fontweight','bold');
grid on;
xlabel('t');
ylabel('x3(t)');
title('Dirac pulse x3(t)');
hold on
figure;
plot(xt,x,'linewidth',2);
set(gca,'fontsize', 14, 'fontweight', 'bold');
grid on;
xlabel('t');
ylabel('x1(t)');
title('Cosine signal (HANNING) Function x1(t)');
z = conv(x,y,'full');
hold on
figure;
plot(xt(1)+yt(1)+(0:(numel(z)-1))*dt,z,'linewidth',2);
set(gca,'fontsize', 14, 'fontweight', 'bold');
grid on;
title('Convolution of x1(t)and x3(t)');
xlabel('t');
ylabel('y(t)= x1(t)*x3(t)');
hold on;
The answer can also be obtained exactly using symbolic math
clear
syms x(t) y(t)
x(t) = 0.5*(1+cos(sym(pi)*t))*rectangularPulse(1,3,t);
y(t) = dirac(t) + dirac(t-1) + dirac(t-2);
syms tau
z(t) = int(x(tau)*y(t-tau),tau,-inf,inf)
figure
fplot(z(t),[-2 10]),grid
More Answers (0)
See Also
Categories
Find more on Numbers and Precision in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!