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!

Matlab Code to obtain DFT and plot its magnitude and phase response

Matlab Code:-   clc; clear all; close all; x=input('Enter the sequence: '); N=length(x); Wn=exp((-j*2*pi)/N);%Twiddle factor fprintf('Twiddle Factor=%f+j(%f)\n',real(Wn),imag(Wn)); disp('Magnitude and phase of Twiddle Factor:');     fprintf('|Wn|=%f    ',Wn);     fprintf('angle Wn=%f\n', angle(Wn));  fprintf('\n');  for k=1:N     X(k)=0; end %Calculation of DFT for k=1:N     for n=1:N         X(k)=X(k)+(x(n)*Wn^((k-1)*(n-1)));     end end %Printing the DFT fprintf('DFT of x(n) is:\n'); disp(X); fprintf('\n'); fprintf('X(k)\tMagnitude\tPhase\n\n'); for k=1:N     fprintf('X(%d)\t%f\t%f\n',k-1,X(k),angle(X(k))); end %To plot the magnitude and phase of the DFT subplot(1,2,1); stem(X,'linewidth',1.5); xlabel('k--->'); ylabel('magnitude--->'); title('Magnitude Response'); grid on; subplot(1,2,2); stem(angle(X),'linewidth',1.5); xlabel('k--->'); ylabel('...

How to plot a Continuous Time Sequence and Discrete Time Sequence in Matlab

1. For Continuous Time Sequence:        Use the function:  plot(X-axis, Y-axis)          For example to plot a parabolic function p(t)=  At^2 for t>=0                                                                                    0        for t<0           Code:           %UNIT PARABOLIC FUNCTION t=linspace(-20,20,20);      %range of X-asis A=1;                  %amplitude of the function for A=1 it is called unit parabolic function p=[t>=0].*(A.*t.^2)/2;      %parabola equation as defined above subplot(1,2,1);                ...