Manual Code for convolution

290 views (last 30 days)
Kwanghun Choi
Kwanghun Choi on 6 Nov 2017
Answered: AKASH KUMAR on 8 Feb 2022
Hello there!! Now, I make a code for convolution. data is discrete like
x=[1,3,5,7,9]; y=[5,4,3,2,1];
It mean if t=1, x is 1 and y=5 / if t=3, x is 5, y is 3 ....
So I cannot use 'conv' function. My code is like that
for t=1:5
convolution(t)=0;
for j=1:t
convolution(t)=convolution(t)+x(t+1-j)*y(j);
end
end
But result is not good. Are there something to fix?

Accepted Answer

Birdman
Birdman on 6 Nov 2017
x=input('Enter x: ')
h=input('Enter h: ')
m=length(x);
n=length(h);
X=[x,zeros(1,n)];
H=[h,zeros(1,m)];
for i=1:n+m-1
Y(i)=0;
for j=1:m
if(i-j+1>0)
Y(i)=Y(i)+X(j)*H(i-j+1);
else
end
end
end
Y

More Answers (2)

keshav kumar
keshav kumar on 17 Aug 2021
close all
clear all
x=input('Enter x: ')
h=input('Enter h: ')
m=length(x);
n=length(h);
X=[x,zeros(1,n)];
H=[h,zeros(1,m)];
for i=1:n+m-1
Y(i)=0;
for j=1:m
if(i-j+1>0)
Y(i)=Y(i)+X(j)*H(i-j+1);
else
end
end
end
Y
stem(Y);
ylabel('Y[n]');
xlabel('----->n');
title('Convolution of Two Signals without conv function');

AKASH KUMAR
AKASH KUMAR on 8 Feb 2022
%
% algorithm to compute convolution
clc
clear
close all
x1 = [5,6,1,2];
h = [10,6,4,8,9,5];
N = length(x1)+length(h)-1;
y=conv(x1,h) % Inbuilt matlab function
y = 1×9
50 90 66 90 109 95 55 23 10
x = linearconvolve(x1,h); % Function call
x
x = 1×9
50 90 66 90 109 95 55 23 10
%% User defined function to find linear convolution
function cnv = linearconvolve(a,b)
L = length(a)+length(b)-1;
cnv = zeros(1,L);
a1=[a,zeros(1,L-length(a))]; % define a new vector of a
b1=[b,zeros(1,L-length(b))];
for i=1:L
c = 0;
for j=1:i
c = c + a1(j)*b1(i-j+1);
end
cnv(i) = c;
end
end

Community Treasure Hunt

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

Start Hunting!