Skip to main content

Matlab Code for Circular Convolution using Matrix Method and also not using cconv method

Matlab Code: 

clc;

clear all;

close all;

%Circular Convolution by Matrix Method

x=input('Enter the first sequence: ');

h=input('Enter the second sequence: ');

n=max(length(h),length(x));

A=0;

%To obtain a circular matrix

for i=1:n

    if i==1

        for j=1:n

            A(i,j)=x(j); %first row stores all the elements of x(n)

        end

    else

    for j=1:n

        if(j==1)

            A(i,j)=x(n-i+2); %first column of rows from i=2 to n are x(n),

                                                                               x(n-i+2),...,x(3),x(2)

        else

            A(i,j)=A(i-1,j-1); % the last (n-1) elements of present row is the 

                                                    fist (n-1) elements of the previous row 

        end

    end

    end

end

disp(A);

X=A*h';  %To calculate matrix multiplication

disp("Circular Convolution by Matrix Method:");

disp(X');

%Calculating Circular Convolution with out using cconv function

disp('Without using cconv method, circular convolution is: ');

l1=length(x);

l2=length(h);

x=[x zeros(1,n-l1)];

h=[h zeros(1,n-l2)];

y=zeros(1,n);

for i=1:n

    for j=1:n

        k=mod(i-j,n);

        k=k+1;

        y(i)=y(i)+x(j)*h(k);

    end

end

disp(y);

%Calculating Circular Convolution using cconv() method

disp("By formula:");

Z=cconv(x,h,n);

disp(Z);

Output:

Enter the first sequence: [1 2 1 2]

Enter the second sequence: [4 3 2 1]

     1     2     1     2

     2     1     2     1

     1     2     1     2

     2     1     2     1


Circular Convolution by Matrix Method:

    14    16    14    16


Without using cconv method, circular convolution is: 

    14    16    14    16


By formula:

    14    16    14    16

Comments

Popular posts from this blog

PN Sequence Generator Circuit Design in Multisim

 I tried doing a PN Sequence generator using a shift register in Multisim but it didn't work. However this one with d flip flops and xor gate did work somewhat. Here is the circuit.       Components Required:      1. 4D Flip Flops      2. XOR Gate      3. Function Generator for Clock Pulses      4. Oscilloscope       Circuit Design  :        Output:- Red Square waves- Clock Pulses Blue waves- PN sequence Hope this helps!

Convolution of two signals using conv() in Matlab

We use the conv(x1,x2) function in Matlab to perform convolution of two discrete signals. For example, to perform the convolution of two discrete time sequences x1 (n) = {1, 0, 1,2}  and x2 (n) = {1, 2, 4, 6}. Code:  x1=[1,0,1,2]; %1st sequence N1=length(x1); %stores length of 1st sequence n1=0:1:N1-1; %range of x axis for 1st graph of 1st sequence subplot(1,3,1); % in a 1x3 grid, 1st sequence occupies the 1st grid stem(n1,x1,'linewidth',1.5); %to plot the sequence specifying time axis, signal and line width xlabel('n1----->'); %title of x axis ylabel('x1----->'); %title of y axis grid on; x2=[1,2,4,6]; %2nd sequence N2=length(x2);    %stores length of 2nd sequence n2=0:1:N2-1;  %range of x axis for 2nd graph of 2nd sequence subplot(1,3,2);  % in a 1x3 grid, 2nd sequence occupies the 2nd grid stem(n2,x2,'red','linewidth',1.5);  %to plot the sequence specifying time axis,signal,line width and colour xlabel('n2----->'); % title of...