0% found this document useful (0 votes)
362 views

BSL Lab Manual

The document discusses basic matrix operations in MATLAB and generation of various signals. It provides MATLAB code to: 1) Perform addition, subtraction, and multiplication on matrices. It also calculates the determinant of a matrix. 2) Generate unit step, unit impulse, sinusoidal, sawtooth, triangular, and square wave signals as both continuous and discrete time sequences. 3) Demonstrate operations on signals like addition, multiplication, scaling, and shifting using MATLAB code examples.
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
362 views

BSL Lab Manual

The document discusses basic matrix operations in MATLAB and generation of various signals. It provides MATLAB code to: 1) Perform addition, subtraction, and multiplication on matrices. It also calculates the determinant of a matrix. 2) Generate unit step, unit impulse, sinusoidal, sawtooth, triangular, and square wave signals as both continuous and discrete time sequences. 3) Demonstrate operations on signals like addition, multiplication, scaling, and shifting using MATLAB code examples.
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 67

BASIC OPERATIONS OF MATRICES ADDITION: A=[2 3 4:5 6 7:1 2 3] A= 2 3 4 5 6 2 3

>> A = [1 2 3;2 3 4;5 6 7] A= 1 2 5 2 3 6 3 4 7

>> B = [2 3 4; 5 6 8;3 6 1] B= 2 3 4 5 6 8 3 6 1 >>X=A+B Subtraction: X= 3 5 7 7 9 12 8 12 8 >> X=A-B X= -1 -1 -1 -3 -3 -4 2 0 6 Multiplication: >> X=A*B X= 21 33 23 31 48 36 61 93 75 Determinant of a matrix:

>> X=det(A) X= 0

Generation of various signals

Matlab code for the generation of Unit Step Sequence


n = input('enter the n value'); t = 0:1:n-1; y1= ones(1,n); subplot(2,2,2); stem(t,y1); ylabel('amp'); xlabel('(b)n'); Output: Enter the n value 10

Matlab code for the generation of Unit impulse Sequence

clc; %clear the data t = -2:1:2; y=[zeros(1,2),ones(1,1),zeros(1,2)]; %Create an array of all zeros and ones subplot(2,2,1); stem(t,y); %function displays two-dimensional discrete sequence data. ylabel('amp'); %label the Yaxes xlabel('(a)n'); %label the Xaxes

1a) Matlab code to generate sinusoidal(continous , discrete) clc; clear all; close all; t=0:0.01:1; x=sin(2*pi*2*t); subplot(2,1,1); plot(t,x); xlabel('--> time'); ylabel('--> magnitude'); title(' continuoes time cose wave '); grid; n=0:0.05:1; x=sin(2*pi*2*n); subplot(2,1,2); stem(n,x,'r'); xlabel('--> time'); ylabel('--> magnitude'); title('discrete time cose wave'); grid;

Matlab code to generate cosine(continous , discrete) clc; clear all; close all; t=0:0.01:1; x=cos(2*pi*2*t); subplot(2,1,1); plot(t,x); xlabel('--> time'); ylabel('--> magnitude'); title(' continuoes time cose wave '); grid; n=0:0.05:1; x=cos(2*pi*2*n); subplot(2,1,2); stem(n,x,'r'); xlabel('--> time'); ylabel('--> magnitude'); title('discrete time cose wave'); grid;

Matlab code to generate sawtooth signal(continous, discrete) clc; clear all; close all; t=-1:0.001:1; x=sawtooth(2*pi*2*t); subplot(2,1,1); plot(t,x); xlabel('--> time'); ylabel('--> magnitude'); title(' continuoes time sawtooth wave '); grid; n=-1:0.05:1; x=sawtooth(2*pi*2*n); subplot(2,1,2); stem(n,x); xlabel('--> time'); ylabel('--> magnitude'); title('discrete time sawtooth wave'); grid;

Matlab code to generate triangular waveform fs = 10000; %Set the sampling frequency fs as 10000. t = 0 : 1/fs : 1.5; %Generate a vector of 15001 samples for t with a value between 0 & 1.5 %with an increment of 0.0001 x = sawtooth (2 * pi * 50 * t , 0.5);%Generate a Triangular wave of frequency 50 Hz, by calling the %MATLAB built-in function sawtooth with 0.5 as the duty cycle parameter. plot(t,x); axis ( [ 0 0.1 -1 1 ] ); %Plot the graph. Adjust the X and Y coordinates to view a few cycles of the triangular wave. xlabel ('Time Index t (sec.)'); ylabel ('Amplitude');%Label the X and Y axes title ('Triangular Wave Signal Sequence'); %Add an appropriate title to the graph

clc; clear all; close all; t=0:0.001:1; x=square(2*pi*2*t); subplot(2,1,1); plot(t,x); xlabel('--> time'); ylabel('--> magnitude'); title(' continuoes time square wave '); axis([0 1 -2 2]); grid; n=0:0.1:1; x=square(2*pi*2*n); subplot(2,1,2); stem(n,x); xlabel('--> time'); ylabel('--> magnitude'); title('discrete time square wave'); grid;

APERIODIC SIGNALS clc; clear all; close all; t=-5:0.01:5; %Unit impulse x1=1; x2=0; x=x1.*(t==0)+x2.*(t~=0); subplot(3,3,1); plot(t,x,'r'); xlabel('->t'); ylabel('->x(t)'); axis([-5 5 -1 2]); title('Unit impulse signal'); grid; %unit step x=x1.*(t>=0)+x2.*(t<0); subplot(3,3,2);

plot(t,x); xlabel('t'); ylabel('x(t)'); axis([-5 5 -1 2]); title('unit step signal'); grid; %ramp signal x1=t; x2=0; x=x1.*(t>=0)+x2.*(t<=0); subplot(3,3,3); plot(t,x); xlabel('t'); ylabel('x(t)'); title('ramp signal'); grid; %triangular signal a=2; x1=1-abs(t)/a; x2=0; x=x1.*(abs(t)<=a)+x2.*(abs(t)>a); subplot(3,3,4); plot(t,x); xlabel('t'); ylabel('x(t)'); title('triangular signal'); grid; %parabolic signal A=0.4; x1=(A*(t.^2))/2; x2=0; x=x1.*(t>=0)+x2.*(t<0); subplot(3,3,5); plot(t,x); xlabel('t'); ylabel('x(t)'); title('parbolic signal'); grid; %signum signal x1=1; x2=0; x3=-1; x=x1.*(t>0)+x2.*(t==0)+x3.*(t<0);

subplot(3,3,6); plot(t,x); xlabel('t'); ylabel('x(t)'); axis([-5 5 -2 2]); grid; title('signum signal'); %gaussian pulse x=exp(-t.^2); subplot(3,3,7); plot(t,x); xlabel('t'); ylabel('x(t)'); grid; title('gaussian pulse'); % decreasing exponential signal x=exp(-0.2*t); subplot(3,3,8); plot(t,x); xlabel('t'); ylabel('x(t)'); title('decreasing exponential signal'); grid; % increasing exponential signal x=exp(0.2*t); subplot(3,3,9); plot(t,x); xlabel('t'); ylabel('x(t)'); title('increasing exponential signal'); grid;

3.Operations on signals
3a) MATLAB CODE FOR SIGNAL ADDITION clc; clear all ; t = 0 : 0.01 : 30; % Clear Command Window %Clears all the previously defined variables %Generate a vector of 3001 samples for t with a value %between 0 & 30 with an increment of 0.01 %Generate the sinusoidal signal of frequency 1/3 Hz % Generate the sinusoidal signal of frequency 1/5 Hz % Perform sample by sample vector addition on x1 and x2 %Divide the graph space into three parts. %Plot signal 1 in the first part with grid.

x1 = sin( 2 * pi * 1/3 * t ); x2 = sin( 2 * pi * 1/5 * t ); y = x1 + x2; subplot( 3,1,1 ); plot( t , x1 ); grid; xlabel( ' Time Index t (sec.) ' ); ylabel( ' x1(t) ' ); %Label the X and Y axes title( ' Signal 1 : Sine Wave of Frequency 1/3 Hz ' ); %Add a title to the graph subplot( 3,1,2 ); plot( t , x2 );

grid; %Plot the graph of signal 2 in the second part with grid. xlabel( ' Time Index t (sec.) ' ); ylabel( ' x2(t) ' ); %Label the X and Y axes title( ' Signal 2 : Sine Wave of Frequency 1/5 Hz ' ); %Add a title to the graph subplot( 3,1,3 ); plot( t , y ); grid; % Plot the graph of resultant signal after summation, in the third part with grid. xlabel( ' Time Index t (sec.) ' ); ylabel( ' y(t) = x1(t) + x2(t) ' ); %Label the X and Y axes title( ' Resultant Signal : Signal 1 + Signal 2 ' ); %Add A title to the graph

3b MATLAB CODE FOR SIGNAL MULTIPLICATION clc; clear all; % Clear Command Window and all the previously defined variables t = 0 : 0.01 : 30; % Generate a vector of 3001 samples for t with a %value between 0 & 30 with an increment of 0.01 x1 = sin( 2 * pi * 1/3 * t ); %Generate the sinusoidal signal of frequency 1/3 Hz x2 = sin( 2 * pi * 1/5 * t ); %Generate the sinusoidal signal of frequency 1/5 Hz y = x1 .* x2; %Perform sample by sample multiplication on x1 and x2. subplot( 3,1,1 ); plot( t , x1 ); %Divide the graph space into three parts. grid; % Plot signal 1 in the first part, with grid. xlabel( ' Time t (sec.) ' ); ylabel( ' x1(t) ' ); %Label the X and Y axes title( ' Signal 1 : Sine Wave of Frequency 1/3 Hz ' ); %Add an appropriate title to the graph subplot( 3,1,2 ); plot( t , x2 ); grid; %Plot the graph of signal 2 in the second part.Include the grid. xlabel( ' Time Index t (sec.) ' ); ylabel( ' x2(t) ' ); %Label the X and Y axes

title( ' Signal 2 : Sine Wave of Frequency 1/5 Hz ' ); %Add an appropriate title to the graph subplot( 3,1,3 ); plot( t , y ); grid; %Plot the graph of resultant signal after summation, in the third part. xlabel( ' Time Index t (sec.) ' ); ylabel( ' y(t) = x1(t) .* x2(t) ' ); %Label the X and Y axes title( ' Resultant Signal : Dot Product of Signal 1 and Signal 2 ' );

3c) MATLAB CODE FOR SIGNAL SCALING


clc; % Clear Command Window clear all; % Clear all the previously defined variables N = input ( ' Type the desired length of the signal '); %Input a number for N, the length of the signal t = 0 : 0.01 : N-1; %Generate a vector t of N samples x = sin( 2 * pi * 1/5 * t ); % Generate a sine wave for example A = input ( ' Please input a SCALE FACTOR(>1 or a +ve fraction) for A '); %Input a No. greater than unity or a positive fraction, using which the given signal is to be scaled y = A * sin( 2 * pi * 1/5 * t ); %Scale the signal by the scale factor A subplot( 2,1,1 ); plot( t , x ); % Divide the graph space into two parts, Plot x in first part. axis ( [ 0 N-1 -A A ] ); grid; %Aadjust the axes appropriately and use grid. xlabel( ' Time Index t (sec.) ' ); ylabel( ' x(t) ' ); %Label the X and Y axes title( ' Signal 1 : Sine Wave of Frequency 1/5 Hz ' ); %Add a title to the graph

subplot( 2,1,2 ); plot( t , y ); part. axis ( [ 0 N-1 -A A ] ); grid; use grid. xlabel( ' Time Index t (sec.) ' ); ylabel( ' y(t) ' ); title( ' Signal 2 : Scaled Version of Signal 1

% Plot the scaled signal y in second %adjust the axes appropriately and %Label the X and Y axes ' );%Add a title to the graph

output:
Type the desired length of the signal 10 Please input a SCALE FACTOR(>1 or a +ve fraction) for A 2

3d) MATLAB CODE FOR SIGNAL SHIFTING clear all; clc ; %Clear Command Window and all the previously defined variables x = input( ' Type the samples of a signal ' ); %Generate any arbitrary signal vector x by %typing the samples n1 = input( ' Type the time origin at which the first signal sample is ' ); %Considering the X-axis range from n1 to n2 for the signal x, enter the value of n1, where thefirst signal sample begins. N = length(x); %Find the length of the signal sequence n2 = n1 + N -1; %Find the time index of the last sample of the signal x n = n1 : n2; %Set the range for X-axis from n1 to n2 disp( ' The program will now ask for the amount of shift ' ); %Display on screen the statement in parenthesis disp( ' Enter a POSITIVE number for delay & NEGATIVE number for Advancement ' ); %Display on screen the statement in parenthesis disp( ' Press any key to continue ' ); pause; %Display on screen the statement in parenthesis %and wait until the above two statements are read. d = input( ' Enter the desired amount of shift of the signal ' ); %Input the value of time shift nn = n + d; xs = x; %Shift the time index by the amount of shift and leave the original %signal as it is by just assigning it to a different variable.

subplot(2,1,1); stem( n , x ); %Plot the original signal as stems in the First part of the graphic. xlabel( ' Time Index n (sec.) ' ); ylabel( ' x(n) ' ); %Label the X and Y axes title( ' Original Signal ' ); %Add a title to the graph Subplot(2,1,2); stem( nn , x ); %Plot the shifted signal in the second part of the graphic. xlabel( ' Time Index n (sec.) ' ); ylabel( ' xs(n) ' ); %Label the X and Y axes title( ' Time Shifted Signal ' ); %Add a title to the graph output: Type the samples of a signal 7 Type the time origin at which the first signal sample is 0 The program will now ask for the amount of shift Enter a POSITIVE number for delay & NEGATIVE number for Advancement Press any key to continue Enter the desired amount of shift of the signal 4

3e) MATLAB CODE FOR SIGNAL FOLDING clc; % Clear Command Window clear all ; %Clear all the previously defined variables t = 0 : 0.1 : 5; %Generate a vector n using a step size of 0.1 x = 0.5 * t; %Generate a ramp as an example signal lx = length(x); %Find the length of the signal sequence nx = 0 : lx-1; %Set a range for positive X-axis xf = fliplr( x ); %Perform the folding operation of signal x by using the built-in function fliplr nf = -fliplr( nx ); %Fold the vector nx to get a mirror image vector nf. %This will set the range of negative X-axis for the folded signal subplot(2,1,1); % Divide the graph space into two parts

stem( nx , x ); % Plot the original signal in the first part as stems xlabel( ' nx ' ); ylabel( ' x(nx) ' ); %Label the X and Y axes title('Original Signal' ); %Add a title to the graph subplot(2,1,2); stem( nf , xf ); %Plot the folded signal in the second part. xlabel( ' nf ' ); ylabel( ' xf(nf) ' ); %Label the X and Y axes title( ' Folded Signal ' ); %Add a title to the graph

The 3f) MATLAB CODE FOR COMPUTATION OF ENERGY n = 0:1:20; %Create a vector n of 101 samples x = (1/2) .^ n; %Create the signal x(n) = (1/2)n u(n) stem(n,x); axis([0 25 0 1]); %Plot the signal as stems and adjust the axes appropriately. disp( ' The calculated Energy E of the signal is '); %Display the message in brackets on screen

E = sum(abs(x).^2)

%Calculate the energy of the signal disp( ' The Theoretical Energy of the signal is ' ); %Display the message in brackets on screen E_Theory = 4/3 ; %Calculate the theoretical value of the energy of the signal Output: The calculated Energy E of the signal is E= 1.3333

3g) MATLAB CODE FOR COMPUTATION OF POWER N = input( 'Type a value for N ');% Type a value for N, which is the one sided length of the signal. t = -N : .0001 : N; %Create a vector t that will act as a time index x = cos (2 * pi * 50 * t ) .^ 2; %Generate the signal x = cos 2 (2 f t) disp( ' The calculated Power P of the signal is ' ) %Display the message on the screen

P = sum(abs(x).^2)/length(x)

%Calculate the power of the signal x and

display its value on screen. plot(t,x); axis ([0 0.1 0 1]); %Plot the signal by adjusting the axes appropriately. disp( ' The Theoretical Power of the signal is ' ) %Display the message in brackets on screen P_Theory = 3/8 %Show the theoretical value of the power of the signal on screen. Output:

Type a value for N 20 The calculated Power P of the signal is P= 0.3750 The Theoretical Power of the signal is P_Theory =

0.3750

4. Finding the even and odd parts of a signal or sequence and real and imaginary parts of a signal
4a) MATLAB CODE TO FIND WHETHER A SIGNAL IS EVEN OR ODD AND FIND ITS EVEN AND ODD PARTS: clc;clear all;close all; tmin=-4;tmax=4; dt=0.1; t=tmin:dt:tmax; %x1=exp(2*t); %x2=exp(-2*t); x1=sin(2*pi*0.2*t); x2=sin(-(2*pi*0.2*t));

%x1=cos2*pi*0.2*t); %x2=cos(-(2*pi*0.2*t));
if(x2==x1) disp(' The signal is even signal '); else if (x2==(-x1)) disp(' The signal odd signal '); else disp('The signal is neither even nor odd signal'); end end xe=(x1+x2)/2; xo=(x1-x2)/2; ymin=min([min(x1),min(x2),min(xe),min(xo)]);

ymax=max([max(x1),max(x2),max(xe),max(xo)]); subplot(2,2,1); plot(t,x1); axis([tmin tmax ymin ymax]); xlabel('t'); ylabel('x1(t)'); title('signal x(t)'); grid; subplot(2,2,2); plot(t,x2); axis([tmin tmax ymin ymax]); xlabel('t'); ylabel('x2(t)'); title('signal x(-t)'); grid; subplot(2,2,3); plot(t,xe); axis([tmin tmax ymin ymax]); xlabel('t'); ylabel('xe(t)'); title('even part of x(t)'); grid; subplot(2,2,4); plot(t,xo); axis([tmin tmax ymin ymax]); xlabel('t'); ylabel('xo(t)'); title('odd part of x(t)'); grid;

4b) MATLAB CODE TO FIND THE REAL AND IMAGINARY PARTS OF A SIGNAL clc; clear all;

x = [0, 2+j*4, -3+j*2, 5-j*1, -2-j*4, -j*3, 0] %Create the complex signal %vector x n = -3 : 3; %Set a range for X-axis using vector n xc = conj( x ); %Compute the complex conjugate of x xc_folded = fliplr(xc); %Fold the signal xc using the built-in %function 'fliplr' xc_even = 0.5 * [x + xc_folded]; %Compute the even part of xc xc_odd = 0.5 * [x - xc_folded]; %Compute the odd part of xc figure; %Open a new figure window (Figure 1) subplot(2,1,1) ; stem(n , real(x) ) %Plot the real part of complex signal x in the 1st half of Figure1. title('Real part of Complex Signal x(n)') xlabel ( ' n ' ); ylabel ('Magnitude of Real [x(n)]'); subplot(2,1,2); stem( n , imag(x) ) % Plot the imaginary part of complex %signal x in the 2nd half of Figure 1. title('Imaginary part of Complex Signal x(n)')%Add A title to the graph xlabel ( ' n ' ); ylabel ('Magnitude of Imag[ x(n)]'); figure; %Open a new figure window (Fig 2) subplot(2,1,1) ; stem(n , real(xc_even)); %Plot the real part of even signal %xc_even in the 1st half of Fig 2. title('Real part of even signal xc(n)'); xlabel ( ' n ' ); ylabel ('Magnitude of Real (xc-even)'); subplot(2,1,2) ; stem( n , imag(xc_even) ) %Plot the imaginary part of even %signal xc_even in the 2nd half of %Figure 2. title('Imaginary part of even signal xc(n)') xlabel ( ' n ' ); ylabel ('Magnitude of Imag (xc-even)'); figure; %Open a new figure window (Fig3) subplot(2,1,1) ; stem( n , real(xc_odd)) %Plot the real part of odd signal %xc_odd in the 1st half of Fig 3. title('Real part of odd signal xc(n)') xlabel ( ' n ' ); ylabel ('Magnitude of Real (xc-odd)'); subplot(2,1,2);stem(n,imag(xc_odd)) %Plot the imaginary part of odd signal % xc_odd in the 2nd half of Fig 3. title('Imaginary part of odd signal xc(n)') xlabel ( ' n ' ); ylabel ('Magnitude of Imag (xc-odd)');

5.Convolution between signals


MATLAB Code Explanation x = input (' type the samples of input signal x(n) '); %Enter the values of Input Signal x(n) nx1 = input( ' type the time origin of the first sample of x(n) ' );%Enter the time origin of the first sample of x(n) NX = length(x); % Find the length of the signal x(n) nx2 = nx1 + NX -1; %Find the upper limit of X-axis range nx = nx1 : nx2; %Set X-axis range for the graph of x(n) figure; stem(nx,x) % Open a new figure window (Figure 1) and plot a stem graph of x(n) title (' Input Signal x(n) '); %Add an appropriate title to the graph xlabel ('Time Index n'); ylabel ( ' x(n) ' ); %Label the X and Y axes h = input (' type the samples of Impulse response signal h(n) '); %Enter the values of Impulse response Signal h(n) nh1 = input( ' type the time origin of the first sample of h(n) ' ); %Enter the time origin of the first sample of h(n) NH = length(h); %Find the length of the signal h(n)

nh2 = nh1 + NH -1; %Find the upper limit of X-axis range nh = nh1 : nh2; %Set X-axis range for the graph of h(n) figure; stem(nh,h) %Open a new figure window (Figure 2) and plot a stem graph of h(n) title (' Impulse Response Signal h(n) ');%Add an appropriate title to the graph xlabel ('Time Index n'); ylabel ( ' h(n) ' ); %Label the X and Y axes y = conv ( x , h ); %Compute the LTI system output y(n) using the built-in MATLAB function 'conv' NY = NX + NH -1; %Find the length of the signal y(n) ny1 = nx1 + nh1; %Find the time origin at which the first signal sample of y(n) is available ny = ny1 : NY-abs(ny1)-1; %Set X-axis range for the graph of y(n) figure; stem(ny,y) % Open a new figure window (Figure 3) and plot a stem graph of y(n) title (' Output Signal y(n) = x(n)*h(n)'); %Add an appropriate title to the graph xlabel ('Time Index n'); ylabel ( ' y(n) ' ); %Label the X and Y axes disp ('Time Index of x(n) = '); disp(nx); %Display on screen the message in parentheses and the time index of x(n) disp ('Input Signal Sequence x(n) = '); disp(x); disp ('Time Index of h(n) = '); disp(nh); disp ('Impulse Response Sequence h(n) = '); disp(h); disp ('Time Index of y(n) = '); disp(ny); disp ('output Signal Sequence y(n)= '); disp(y); Output:

7 a)MATLAB code for verification of linearity property of a discrete time system x1=input(type the samples of x1);%enter the values of first input signal x1. x2=input(type the samples of x2); % enter the values of second input signal x2 if(length(x1)~= length(x2) )% check if the lengths of two vectors x1 and x2 are same disp(ERROR :Lengths of x1&x2 are different); %If the sizes are different display the error message return; %get out of the program, as you cannot proceed further, and go to the command prompt end; h=input(type the samples of h); % enter the samples of impulse response h of the LTI system N=length(x1)+length(h)-1; %find the length of the o/p sequence disp(length of the output signal will be ); disp(N); a1=input(the scale factor a1 is); %Enter the scale factor a1 of the path of x1 a2=input(the scale factor a2 is); %Enter the scale factor a2 of the path of x2 x=a1*x1+a2*x2; y01=conv(x,h); y1=conv(x1,h); h. % find the intermediate o/p x of system 1 as a1x1 + a2 x 2 %find the final o/p of system 1 as the convolution of x and h. %find the 1st intermediate o/p y1 of system 1 as the convolution of x1 and

y1s=a1*y1; %scale y1 with the scaling factor a1 y2=conv(x2,h); %find the 1st intermediate o/p y1 of system 2 as the convolution of x1 and h. y2s=a2*y2; %scale y2 with the scaling factor a2

y02=y1s+y2s; % find the final o/p of system 2 by adding the two intermediate outputs. disp(input signal x1 is); disp(x1); disp(input signal x2 is); disp(x2); disp(Output sequence y01 is); disp(y01); disp(Output sequence y02 is); disp(y02); if(y01==y02) disp(y01=y02.Hence the LTI system is LINEAR); end; output:

type the samples of x1[2 5 3 7 -1] type the samples of x2[-4 6 -2 3 1] type the samples of h[1 -3 4 -2 7 2 -1 3] length of the output signal will be 12 the scale factor a1 is3 the scale factor a2 is2 input signal x1 is 2 5 3 7 -1 input signal x2 is -4 6 -2 3 1 33 168 123 -14 82

Output sequence y01 is -2 33 -84 124 -130 286 -3 Output sequence y02 is

-2 -3

33 -84 124 -130 286

33 168 123 -14

82

y01=y02.Hence the LTI system is LINEAR


>> 7 b)MATLAB code for verification of time invariance property of a discrete time system x=input(type the samples of x(n)); %enter the values of the input signal x(n) h=input(type the samples of h(n)); %enter the values of the impulse response h(n) of system H y=conv(x,h); %find the output signal y(n) as the convolution of x(n)and h(n) disp(enter a POSITIVE number for delay); d=input(desired delay of the signal is); %enter the desired shift by which the signal x(n) needs to be delayed xd=[zeros(1,d),x]; %generate the delayed input signal xd(n) by padding x(n) with d zeros nxd=0:length(xd)-1; %set the x-axis range for input signals graph yd=conv(xd,h); %convolve the delayed input signal xd(n) with impulse response h(n) to produce a new output signalyd(n) nyd=0:length(yd)-1; %set the x-axis range for output signals graph disp(original input signal x(n) is); disp(x); disp(delayed input signal xd(n) is); disp(xd); disp(original output signal y(n) is); disp(y); disp(delayed output signal y(n) is); disp(yd); xp=[x,zeros(1,d)]; %append d zeros to vector x so as to plot x with xd on the same graph figure; subplot(2,1,1); stem(nxd,xp); grid; xlabel(time index n); ylabel(x(n)); title(original input signal x(n)); subplot(2,1,2); stem(nxd,xd); grid; xlabel(time index n); ylabel(xd(n)); title(delayed input signal xd(n)); yp=[y,zeros(1,d)]; %append d zeros to vector y so as to plot y with yd on the same graph figure subplot(2,1,1); stem(nyd,yp);

grid; xlabel(time index n); ylabel(y(n)); title(original output signal y(n)); subplot(2,1,2); stem(nyd,yd); grid; xlabel(time index n); ylabel(yd(n)); title(delayed output signal yd(n));

type the samples of x(n)[0 1 1 1 2 2 2] type the samples of h(n)[1 3 5 2 1] enter a POSITIVE number for delay desired delay of the signal is4 original input signal x(n) is 0 1 1 1 2 2 2 delayed input signal xd(n) is 0 0 0 0 0 1 1 original output signal y(n) is 0 1 4 9 12 16 21 delayed output signal y(n) is Columns 1 through 14 0 0 0 0 0 1 4 9 12 16 21 21 16 6 1 21 2 16 2 6 2 2

Column 15 2

8. Computation of unit sample , unit step responses of the given LTI system and verifying its physical realizability and stability properties

8a)MATLAB code for Unit Impulse Response of LTI System num = input ('type the numerator vector ');%Enter the fficients of the Numerator polynomial'); den = input ('type the denominator vector '); %Enter the coefficients of the Denominator polynomial N = input ('type the desired length of the output sequence N '); %Enter the number of output samples that you wish to see in a graph n = 0 : N-1;% Set a range for X-axis imp = [ 1 zeros(1, N-1) ]; %Generate the Unit Impulse signal of N samples h = filter ( num, den, imp );% Obtain the output of the system, using the builtof h(n) disp('the impulse response of lti system is'); disp(h); stem(n,h); xlabel ('time index n'); ylabel ('h(n)'); title ('Impulse Response of LTI system');

output
All zero system :

All pole system:

Pole zero system :

8b)MATLAB code for Unit Step Response of LTI System num = input ('type the numerator vector ');%Enter the coefficients of the Numerator polynomial den = input ('type the denominator vector ');%Enter the coefficients of the Denominator polynomial N = input ('type the desired length of the output sequence N ');%Enter the number of output samples that you wish to see in a graph n = 0 : 1 : N-1; %Set a range for X-axis u = ones (1, N); %Generate the Unit Step signal of N samples s = filter ( num, den, u );% Obtain the output s(n) of the system,using the built-in MATLAB function 'filter' disp('The step response of LTI system is'); disp(s); %Display the message in parentheses and the values of s(n) stem(n,s) %Plot a stem graph of s(n) xlabel ('time index n'); ylabel ('s(n)'); title ('Step Response of LTI system');

Pole-zero system:

8c)MATLAB code for Frequency Response of LTI System num = input ('type the numerator vector '); %Enter the coefficients of the Numerator polynomial den = input ('type the denominator vector '); %Enter the coefficients of the Denominator polynomial N = input ('number of frequency points '); %Enter the number of frequency points at which the frequency response need to be calculated w = 0 : pi / N : pi; %Set a range for X-axis from 0 to ? H = freqz(num, den, w); %Calculate the frequency response H(ejw) of the transfer function H(z) for w ranging from 0 to ? figure; %Open a new figure window (Figure 1) for plotting the real and imaginary parts of H subplot(2 , 1 , 1 ); plot( w/pi , real(H) ); %Divide figure window into two portions and plot the real part of H in the 1st portion xlabel( ' omega \pi' ); ylabel(' Amplitude ' ) title ( 'Real part' ); subplot( 2 , 1 , 2 ); plot( w/pi , imag(H) );%Plot the imaginary part of H in the 2nd portion of figure window xlabel( ' \omega / \pi' ); ylabel(' Amplitude ' ) title ( 'Imaginary part' ); figure;% Open a new figure window (Figure 2) for plotting the magnitude and phase of H subplot( 2 , 1 , 1 ); plot( w/pi , abs(H) );% plot the magnitude part of H in the 1st portion xlabel(' omega \pi'); ylabel(' Magnitude') title ('Magnitude Spectrum'); subplot( 2 , 1 , 2 ); plot( w/pi , angle(H) ); %Plot the phase part of H in the 2nd portion of figure window xlabel(' omega \pi'); ylabel(' Phase(radians) '); title ('Phase ');

output :

8d)MATLAB code for finding the Stability of LTI System num=input(type the numerator);

den = input (' type the denominator vector '); [z,p,k] = tf2zp(num,den); %Obtain the location of zeros, poles and the gain constant using the built-in function 'tf2zp' disp ('Gain constant is '); disp(k); %Display the message in parentheses and the value of gain constant k disp (' Zeros are at '); disp(z); %Display the message in parentheses and the location of zeros disp ('radius of Zeros ') ; radzero =abs(z)%Display the message in parentheses and the radius of zeros disp ('Poles are at '); disp(p); %Display the message in parentheses and the location of poles disp ('radius of Poles ') ; radpole = abs(p) %Display the message in parentheses and the radius of poles if max(radpole) >= 1 %If at least one pole is outside the unit circle, do the following disp (' ALL the POLES do not lie within the Unit Circle '); %Display the message in parentheses disp (' Oooooops..The given LTI system is NOT a stable system '); %Display the message in parentheses else %If all the poles lie within the unit circle, do the following disp (' ALL the POLES lie WITHIN the Unit Circle '); disp (' The given LTI system is a REALIZABLE and STABLE system '); end; %End of IF statement zplane(num,den) %Plot the pole zero map of the given system in Z-plane, using the built-in function 'zplane' title ( ' Pole-Zero Map of the LTI system ' ); Output:

9.Gibbs phenomenon
Matlab code for observing gibbs phenomenon

clc; clear all; variables

%Clear C ommand Window and all the previously defined

N = input( 'type the total number of harmonics' ); %Input the number of sine wave %harmonics that you wish to add to generate the synthesized signal t = 0 : 0.001 : 1; %Generate a vector of 1001 samples for t with values between 0 & 1 and with %an increment of 0.001 y = square( 2 * pi * t ); %Generate the square wave signal of period T=1, using the built-in %function 'square' plot( t , y , 'r' , 'linewidth' , 2 ) %Plot the original square wave signal y(t) with a red line and %thickness of 2 units, for comparison with the synthesized square wave signal axis( [ 0 1 -1.5 1.5 ] ) Adjust the scale of X and Y axes to have a clear view of signals hold; %Hold the original square wave plot so as to superimpose the synthesized square %wave on to it for comparison sq = zeros( size(t) ); %Generate a vector of 1001 zeros to initialize the sq vector for n = 1 : 2 : N %Generate odd values for n beginning with 1 and with an %increment of 2, in each for loop sq = sq + (4 / (pi * n) * sin( 2 * pi * n * t)); %Generate the synthesized square %wave based on equation (10.9) end; %End of 'For' loop plot( t , sq ) %Plot the graph of synthesized square wave signal . grid; %Include grid lines in the graph xlabel( 't' ); ylabel( 'sq(t)' ); %Label the X and Y axes title('Synthesized Square Wave Using Fourier Series'); %Add an appropriate title to the graph output: type the total number of harmonics5 Current plot held

type the total number of harmonics50

Current plot held

10. Finding the fourier transform of a given signal and plotting magnitude and phase spectrum
Matlab code for computing the DFT clc; clear all; %Clear Command Window and all the previously defined variables f = 100; %Fix the frequency of the Cosine wave at 100 Hz. Fs = 1000; % Fix the Sampling frequency at 1 KHz, following the Nyquist criterion. Ts = 1/Fs; % Find the sampling interval N = 1024; % Let the length of the DFT sequence N be 1024. n = [0 : N-1]* Ts; %Set the scale of X-axis for plotting the example signal. x = 0.8 * cos( 2 * pi * f * n); % Generate the Cosine wave of frequency 100 Hz figure; % Open a new figure window (Fig. 1) to plot the Cosine signal x(n). plot( n , x ); grid; % Plot x(n) and include grid. axis( [ 0 0.05 -1 1 ] ); % Adjust the scale of X and Y axes to have a clear view of the signal title(' Cosine Signal of Frequency f'); % Add an appropriate title to the graph xlabel('time n (sec.)'); ylabel('x(n)'); ````````% Label the X and Y axes Xk = fft( x , N ); % Compute the N-point DFT using the built-in function 'fft' k = 0 : N-1; % Set a range for the frequency index variable k figure; % Open a new figure window 2 to plot the magnitude and phase spectra of x(n) Xmag = abs(Xk); %Compute the magnitude of X(k) subplot(2,1,1); % Divide the Fig. 2 graphic space into two portions plot(k,Xmag); , plot the magnitude of X(k) in the 1st portion. title(' Magnitude of Fourier Transform'); %Add an appropriate title to the graph xlabel('frequency index k'); ylabel('Magnitude'); %Label the X and Y axes subplot(2,1,2); plot(k,angle(Xk)); %Plot the phase angle of X(k) in the 2nd portion of Fig.2. grid; title(' Phase of Fourier Transform'); %Add an appropriate title to the graph xlabel('frequency index k'); ylabel('Phase');

12. Locating zeros and poles, and plotting the pole-zero maps in S-plane and Z-plane 12a) MATLAB Code for drawing the pole zero map in S-domain
clc; clear all; num = input ( 'type the numerator polynomial vector ' ); %Enter the coefficients of numerator polynomial N(s) in square brackets den = input( ' type the denominator polynomial vector ' ); %Enter the coefficients of denominator polynomial D(s) in square brackets H = tf( num , den ) %Find the transfer function H(s) [ p , z ] = pzmap( H ); %Find the locations of poles and zeros. p and z will be column vectors. disp (' zeros are at '); disp( z ) %Display the message in parentheses and the location of zeros disp ('poles are at '); disp( p ) %Display the message in parentheses and the location of poles figure; %Open a new figure window (Fig.1) for plotting the pole zero map pzmap( H ) %Plot the pole zero map [ r, p, k ] = residue( num , den );% Find the PFE coefficients (residues) r, %pole locations p and the gain constant k of H(s) disp ('PFE coefficients '); disp( r ); %Display the message in parentheses and %the residues r disp ('Gain constant is '); disp( k );% Display the message in parentheses and %the gain constant k if max(real(p)) >= 1 %If the real part of any of the poles is greater than or equal to 1, do the%following disp (' All poles DO NOT LIE in the Left Half of S-Plane '); %Display the message in parentheses disp (' Oooooops..The given LTI system is NOT a stable system '); Else %If the real part of any of the poles is less than 1, do the following disp (' ALL the POLES lie in the Left Half of S-Plane '); disp (' The given LTI system is a STABLE system '); end; %End of the IF statement figure; %Open a new figure window (Fig.2) for plotting the impulse response h(t) t = 0 : 0.1 : 5; %Set a time range for X-axis h = impulse( H , t ); %Find the impulse response h(t), using the built-in function 'impulse' plot( t , h ) %Plot the impulse response h(t) versus time t xlabel('t'); ylabel('h(t)'); %Label the X and Y axes title ( ' Impulse Response of the LTI system ' ); output: simple distinct poles: type the numerator polynomial vector [1 -2 1] type the denominator polynomial vector [1 6 11 6] Transfer function: s^2 - 2 s + 1

---------------------s^3 + 6 s^2 + 11 s + 6 zeros are at 1 1 poles are at -3.0000 -2.0000 -1.0000 PFE coefficients 8.0000 -9.0000 2.0000 Gain constant is ALL the POLES lie in the Left Half of S-Plane The given LTI system is a STABLE system

Complex conjugate poles: type the numerator polynomial vector [0 1 2 1] type the denominator polynomial vector [1 2 4 8]

Transfer function: s^2 + 2 s + 1 --------------------s^3 + 2 s^2 + 4 s + 8 zeros are at -1 -1 poles are at -2.0000 0.0000 + 2.0000i 0.0000 - 2.0000i PFE coefficients 0.1250 0.4375 - 0.0625i 0.4375 + 0.0625i Gain constant is All poles DO NOT LIE in the Left Half of S-Plane Oooooops..The given LTI system is NOT a stable system Multiple Order Poles:

type the numerator polynomial vector [1] type the denominator polynomial vector [1 2 0 0] Transfer function: 1 ----------s^3 + 2 s^2 zeros are at poles are at 0 0 -2 PFE coefficients 0.2500 -0.2500 0.5000 Gain constant is All poles DO NOT LIE in the Left Half of S-Plane Oooooops..The given LTI system is NOT a stable system

12b) MATLAB Code for drawing the pole zero map in Z-domain clc; clear all; %Clear Command Window and all the previously defined variables num = input (' type the numerator vector '); %Enter the coefficients of numerator %polynomial N(z) in square brackets den = input (' type the denominator vector '); %Enter the coefficients of denominator polynomial D(z) in square brackets H = filt(num , den) %Find the transfer function H(z) using the %built-in function 'filt' z = zero(H); %Find the locations of zeros. z will be a column vector. disp (' zeros are at '); disp(z) %Display the message in parentheses and the %location of zeros disp ('radius of Zeros ') ; radzero = abs(z) %Display the message in parentheses and the radius of zeros [r,p,k] = residuez(num,den); %Find the PFE coefficients (residues) r, pole %locations p and the gain constant k of H(z) disp ('poles are at '); disp(p) %Display the message in parentheses and the %location of poles disp ('radius of poles ') ; radpole = abs(p) %Display the message in parentheses and the radius of poles disp ('PFE coefficients '); disp(r); %Display the message in parentheses and %residues r disp ('Gain constant is '); disp(k); %Display the message in parentheses and %gain constant k figure; %Open a new figure window (Fig.1) for plotting the pole zero map

zplane(num,den) %Plot the pole zero map in z-plane title ( ' Pole-Zero Map of the LTI system in Z-Plane' ); if max(radpole) >= 1 %If the magnitude of any of the poles is %greater than or equal to 1, do the following disp (' ALL the POLES do not lie within the Unit Circle '); disp (' Oooooops..The given LTI system is NOT a stable system '); else %If the magnitude of any of the poles is less than 1, do the following disp (' ALL the POLES lie WITHIN the Unit Circle '); disp (' The given LTI system is a REALIZABLE and STABLE system '); end; %End of the IF statement figure; %Open a new figure window (Fig.2) for plotting the impulse response h(n) impz(num,den) %Plot the time domain impulse response h(n) of the LTI system H(z)

output: simple and distinct poles:


type the numerator vector [1 -1 1] type the denominator vector [1 1 0.16] Transfer function: 1 - z^-1 + z^-2 -------------------1 + z^-1 + 0.16 z^-2 Sampling time: unspecified zeros are at 0.5000 + 0.8660i 0.5000 - 0.8660i radius of Zeros radzero = 1.0000 1.0000 poles are at -0.8000 -0.2000 radius of poles radpole = 0.8000 0.2000 PFE coefficients 5.0833 -10.3333

Gain constant is 6.2500 ALL the POLES lie WITHIN the Unit Circle The given LTI system is a REALIZABLE and STABLE system

Complex and conjugate poles: type the numerator vector [1 1] type the denominator vector [1 -1 0.5] Transfer function: 1 + z^-1 ------------------1 - z^-1 + 0.5 z^-2 Sampling time: unspecified zeros are at 0 -1 radius of Zeros radzero = 0 1 poles are at 0.5000 + 0.5000i 0.5000 - 0.5000i radius of poles radpole = 0.7071 0.7071 PFE coefficients 0.5000 - 1.5000i 0.5000 + 1.5000i Gain constant is ALL the POLES lie WITHIN the Unit Circle The given LTI system is a REALIZABLE and STABLE system

Multiple order poles: type the numerator vector [1] type the denominator vector [1 0.5 -1.25 0.375] Transfer function: 1 ------------------------------------1 + 0.5 z^-1 - 1.25 z^-2 + 0.375 z^-3 Sampling time: unspecified zeros are at 0 0 0 radius of Zeros radzero = 0 0 0 poles are at -1.5000 0.5000 + 0.0000i 0.5000 - 0.0000i radius of poles radpole = 1.5000 0.5000 0.5000 PFE coefficients 0.5625 0.1875 + 0.0000i 0.2500 - 0.0000i Gain constant is ALL the POLES do not lie within the Unit Circle Oooooops..The given LTI system is NOT a stable system

13.Generation of Gaussian noise(real and complex), computation its mean, mean square values, Skew, Kurtosis, PSD, Probability Distribution function
clc; clear all; % Clear Command Window and all the previously defined variables

x1 = randn(1,5000); %Generate first set of 5000 samples of Gaussian distributed random numbers x2 = randn(1,5000); %Generate second set of 5000 samples of Gaussian distributed random numbers figure; plot( x1 , x2 , ' . ' ) %Plot the joint distribution of both the sets using 'dots' so as to get a scatter plot in a new figure window title('Scatter Plot of Gaussian Distributed Random Numbers'); %Add an appropriate title to thegraph x1 = rand(1,5000);% Generate first set of 5000 samples of uniformly distributed randomnumbers x2 = rand(1,5000); %Generate second set of 5000samples of uniformly distributed random numbersfigure; plot( x1 , x2 , ' . ' ) Plot the joint distribution of boththe sets using 'dots' so as to get a scatter plot in a new figure window title('Scatter Plot of Uniform Distributed Random Numbers');%Add an appropriate title to the graph x3 = rand(1,100000);% Generate one lakh samples ofuniformly distributed random numbers figure; subplot(2,1,1); hist(x3)% Plot a histogram graph of x3 in the1st portion of a new figure window title('Uniform Distribution');%Add an appropriate title to the graph y = randn(1,100000);% Generate one lakh samples of Gaussian distributed randomnumbers Text Book : Basic Simulation Lab with MATLAB subplot(2,1,2); hist(y)% Plot a histogram graph of y in the2nd portion of the figure window title('Gaussian Distribution');%Add an appropriate title to thegraph ymu = mean(y) %Find the mean value of y ymsq = sum(y .^ 2 ) / length(y)% Find the mean square value of y ysigma = std(y) %Find the standard deviation of y yvar = var(y)% Find the variance value of y yskew = skewness(y) %Find the skew value of y ykurt = kurtosis(y) %Find the kurtosis value of y output: ymu = 0.0038 ymsq = 1.0043 ysigma = 1.0022 yvar = 1.0043 yskew = -0.0178 ykurt = 3.0212

14. Matlab code for verification of Sampling Theorem


clc;clear all t=-5:0.0001:5;

F1=3; F2=23; x=cos(2*pi*F1*t)+cos(2*pi*F2*t); figure(1); plot(t,x); axis([-0.4 0.4 -2 2]); xlabel('timet(sec)'); ylabel('x(t)'); title('continous signal:x(t)=cos(2piF1t)+cos(2piF2t)'); %case 1 Fs1=1.4*F2; ts1=1/Fs1; n1=-0.4:ts1:0.4; xs1=cos(2*pi*F1*n1)+cos(2*pi*F2*n1); figure(2); stem(n1,xs1); hold on; plot(t,x,'r'); axis([-0.4 0.4 -2 2]); hold off; xlabel('time sample(n)'); ylabel('amplitude'); title('discrete time signal'); legend('Fs<2Fmax'); %case 2 Fs2=2*F2; ts2=1/Fs2; n2=-0.4:ts2:0.4; xs2=cos(2*pi*F1*n2)+cos(2*pi*F2*n2); figure(3); stem(n2,xs2); hold on; plot(t,x,'r'); axis([-0.4 0.4 -2 2]); hold off; xlabel('time sample(n)'); ylabel('amplitude'); title('discrete time signal'); legend('Fs=2Fmax'); %case 3 Fs3=7*F2; ts3=1/Fs3; n3=-0.4:ts3:0.4; xs3=cos(2*pi*F1*n3)+cos(2*pi*F2*n3); figure(4); stem(n3,xs3); hold on; plot(t,x,'r'); axis([-0.4 0.4 -2 2]); hold off;

xlabel('time sample(n)'); ylabel('amplitude'); title('discrete time signal'); legend('Fs>2Fmax');

17.Impulse response of a raised cosine filter


Matlab code for plotting Impulse Response of RCF
clc; clear all; t=linspace(-5,5,1000); beta1=0.2; beta2=0.4; beta3=0.6; Ts=1; h=(sin(pi*t/Ts))./(pi*t/Ts); h1=(cos(pi*beta1*t/Ts))./(1-(2*beta1*t/Ts).^2); h2=(cos(pi*beta2*t/Ts))./(1-(2*beta2*t/Ts).^2); h3=(cos(pi*beta3*t/Ts))./(1-(2*beta3*t/Ts).^2); ht=h.*h1; plot(t,ht); hold on; ht=h.*h2; plot(t,ht,'r'); ht=h.*h3; plot(t,ht,'g'); xlabel('timet(sec)'); ylabel('h(t)'); grid; legend('beta-->0.2','0.4','0.6'); hold off;

Matlab code for Cross Correlation of x(n) and Delayed x(n)

x= [1 2 3 -2 -1];% Create a sample signal vector x(n) D = input( ' type the delay D ' );%Enter the desired amount of delay D xd = [ zeros(1,D) x ]; %Create a delayed signal xd(n) with a delay D [ r , lag ] = xcorr( x , xd ); %Compute the cross correlation of x(n)and xd(n) using the built-in function'xcorr' stem( lag , r ) %Plot a stem graph of cross correlated output versus the lag title( ' Cross Correlation of x(n) andDelayed x(n) ' );%Add appropriate title to the graph xlabel( ' Lag Index l ' ); ylabel( ' Rxy( l ) ' );%Label the X and Y axes output: type the delay D 5

Matlab code for Time Delay Estimation using Cross Correlation


x= [1 2 3 -2 -1];% Create a sample signal vector x(n) D = input('type the round tripdelay D ');%Enter the desired amount of delay D alpha= input('type the attenuation factor ');%Enter a value (<1) for the attenuation factor xd = [zeros(1,D) x]; %Create a delayed signal xd(n) with a delayD NXD = length(xd); %Find the length of the delayed signal nxd = 0 : NXD-1; %Set a uniform range for X-axis of the plotof x(n) versus xd(n) w = rand(1,NXD) - 0.5; %Create a random noise vector of the samelength as that of xd(n)Enter a 1 for presence of object, or elseenter a 0 obj=input(' type 1 for presence of object or a 0 for absence ');

if obj == 1 %If the object is present run the next two statements to attenuate the delayed signal and add noise to it xa= alpha * xd; %Attenuate the strength of xd(n) by timesto account for loss of amplitude y = xa + w; %Corrupt the attenuated signal xa(n) byadding random noise else %If the object is not present, then thereceived signal will have noise only. Runthe next statement. y = w; %Equate the received signal to noise end; %End of IF statement.figure; Open a new figure window (Fig. 1) xp = [x zeros(1,D)]; %Append 'D' zeros to x(n) so as to plot it onthe same scale as that of y(n) subplot(2,1,1); stem(nxd,xp); %Divide Fig.1 window into two parts, plot astem graph of x(n) in the 1st part xlabel ('n '); ylabel ('x(n)'); %Label the X and Y axes title(' Transmitted Signal x(n)'); %Add appropriate title to the graph NY = length(y); %Find the length of the received signal ny = 0 : NY-1; %Set a range for X-axis of the plot of y(n) subplot(2,1,2); stem(ny,y); %Plot a stem graph of y(n) in the 2nd part ofFig. 1 window xlabel ('n '); ylabel ('y(n)'); %Label the X and Y axes title(' Received Signal y(n)');%Add appropriate title to the graph [r,lag] = xcorr(x,y); %Compute the cross correlation of x(n) and y(n) using the built-in function 'xcorr' figure; %Open a new figure window (Fig. 2) stem(lag,r); %Plot a stem graph of cross correlatedoutput versus the lag xlabel ('Lag '); ylabel ('Rxy(l)');% Label the X and Y axes title ('Time Delay Estimation Using Cross Correlation ');%Add appropriate title to the graph output: type the round tripdelay D 4 type the attenuation factor 0.5 type 1 for presence of object or a 0 for absence 1

clc; clear all; %Clear Command Window and all the previously defined variables M = 256; %Set an upper limit for X-axis n = 0 : M-1; %Set the range for X-axis from 0 to 255 x = cos(16*pi*n/M) + sin(32*pi*n/M); % Generate the periodic signal x(n) snr = input('Type the desired SNR '); %Enter a value for the desired SNR

px = var(x) %Find the power of x(n) w = sqrt(12) * (rand( 1 , M )-0.5); %Generate the zero mean unity power white random noise signal an = sqrt(px * (10 ^ ((-1*snr)/10))) %Find the scale factor by which to scale w(n) so as to get the desired SNR w = w .* an; %Scale w(n) by the scaling factor 'an' pn = var(w) %Find the power of noise SNRdb = 10 * log10(px/pn) %Find the actual SNR y = x + w; %Generate noisy signal y(n) by corrupting x(n) with w(n) N = M /8; %Find the common period of x(n) L = floor( M / N ); %Find L, the number of complete cycles of x(n) in y(n) d = zeros( 1 , M );% Generate a row vector 'd' of M zeros for storing the impulse train for i = 1 : M %Begin a 'for' loop if rem(i-1,N) == 0 %If the remainder of (i-1) / N is zero i.e.at i = 0, 32, 64 etc. do the following d(i) = 1; %Generate a unit impulse at that value of i in the vector end; %End of 'IF' loop end; %End of 'FOR' loop Cyd = ifft( fft(y,M).*fft(d,M)) / M; %Find the circular cross correlation of the impulse train y(n) and d(n) using 'fft' and 'ifft' commands r = Cyd * (M/L); %Multiply the result by the scale factor M/L as per (17.15) figure(1); %Open a new figure window (Fig.1) for plotting x(n) plot(n,x,'b'); axis([1 80 -3 3]) %Plot x(n) in Fig.1 in blue color and adjust the scale of X and Y axes for a clear view of few cycles of x(n) xlabel( 'n' ); ylabel( 'x(n)' ); %Label the X and Y axes title('Periodic Signal x(n)') %Add an appropriate title to the graph figure(2); %%Open a new figure window (Fig.2) subplot(2,1,1); plot(n,y,'r'); % Divide Fig.2 into two parts, plot the noisy signal y(n) in red color in the 1stpart. grid; axis([1 96 -3 3]); %Include grid and adjust the scale of X and Y axes for a clear view of few cycles of y(n) xlabel( 'n' ); ylabel( 'y(n)' ); %Label the X and Y axes title('Noisy Signal y(n)') %%Add an appropriate title to the graph subplot(2,1,2);stem(n,d);% Plot a stem graph of Impulse train d(n) in the 2ndpart of Fig.2. grid;axis([1 96 -0.5 1.5]); %Include grid and adjust the scale of X and Y axes for a clear view of few cycles of d(n) xlabel( 'n' ); ylabel( 'd(n)' ); %Label the X and Y axes title('Impulse Train d(n)') %Add an appropriate title to the graph figure(3); %Open a new figure window (Fig.3) for plotting the extracted periodic signal r(n) plot(n,r,'k'); axis([1 80 -3 3])% Plot r(n) in black color and adjust the scale of axes for a clear view of few cycles of r(n) xlabel( 'n' ); ylabel( 'r(n)' ); %Label the X and Y axes title('Extracted Periodic Signal r(n)') %Add an appropriate title to the graph figure(4); %Open a new figure window (Fig.4) for plotting r(n) in comparison to x(n) plot(n,x,'b'); hold on; axis([1 80 -3 3]) %Plot x(n) in blue color, hold the graph so as to superimpose the plot of r(n) on the same graph and adjust the scale of axes

plot(n,r,'r:'); hold off; axis([1 80 -3 3]) %Plot r(n) using red dotted line, release the graph and adjust the scale of axes legend('x(n)','r(n)') %Add an appropriate legend to the graph output: Type the desired SNR 5 px = 1.0039 an = 0.5634 pn = 0.3095 SNRdb = 5.1105

clc; clear all; %Clear Command Window and all the previously defined variables N = 100; %Fix the length of the signals as 100 n = 0:N-1; %Set a range for time on the X-axis dsnr = input('type desired SNR in dB'); %Enter the desired Signal to Noise Ratio in decibels (dB) x = sqrt(2) * sin((pi/5)*n); %Generate an example sine wave signal of period 10 and unity power figure(1); stem(n,x);grid% Open a new figure window(Fig.1), Plot a stem graph of x(n) and include grid axis([ 0 50 -1.5 1.5]) %Adjust the scale of X and Y axes for a clear view of few cycles of x(n) xlabel( ' n ' ); ylabel( 'x(n)' ); %Label the X and Y axes title('Sinusoidal Signal x(n)'); %Add an appropriate title to the graph px = var(x) %Find the power px of x(n) and display it on screen an = sqrt(px * (10^(-1 * dsnr/10)));% Find the scale factor by which to scale w(n) so as to get the desired SNR w = sqrt(12) * (rand(1, N )-0.5); %Generate 100 samples of zero mean unit y power random signal w(n) w = w * an;% Scale w(n) by the scaling factor vn pn = var(w) %Find the power of noise signal w(n) and display it on screen disp('The calculated SNR ');% Display a message on screen SNRdb = 10*log10(px / pn)% Find the SNR in dB and display on screen figure(3); stem(n,w); grid; %Open a new figure window(Fig.3), %Plot a stem graph of w(n) and include grid

axis([0 50 min(w) max(w)])% Adjust the scale of X and Y axes for a clear view of few cycles of w(n) xlabel('n'); ylabel('w(n)'); %Label the X and Y axes title('Random Noise Signal w(n)');% Add an appropriate title to the graph y = x + w; %Corrupt x(n) by adding noise w(n) figure(6); %Open a new figure window (Fig.6) subplot(2,1,1); stem(n,y); grid ; %Divide the Fig.6 into two parts, plot y(n) as a stem graph in the 1st part, include grid axis( [ 0 50 min(y) max(y) ] ) %Adjust the scale of X and Y axes for a %clear view of few cycles of y(n) xlabel( ' n ' ); ylabel( 'y(n)= x(n) + w(n)' );%Label the X and Y axes title('Sinusoidal Signal Corrupted with Random Noise')%Add an appropriate title to the graph [ryy,lag] = xcorr(y,y,'unbiased'); %Find the normalized autocorrelation of y(n) subplot(2,1,2); stem(lag,ryy); grid; %plot Ryy(l) as a stem graph in the 2nd part, include grid axis([0 50 -1.5 1.5]) %Adjust the scale of X and Y axes for a clear view of few cycles of y(n) xlabel( 'Lag Index l' ); ylabel( 'R_y_y(l)' );%Label the X and Y axes title('Autocorrelation Signal R_y_y(l)') %Add an appropriate title to the graph [rxx,lag] = xcorr(x,x); %Find the autocorrelation Rxx(l) of x(n) figure(2); stem(lag,rxx); grid;% Open a new figure window(Fig.2), Plot a stem graph of Rxx(l) and include grid axis([-20 20 min(rxx) max(rxx)]) %Adjust the scale of X and Y axes for a clear view of few cycles of Rxx(l) xlabel('Lag Index l'); ylabel('R_x_x(l)');%Label the X and Y axes title('Autocorrelation Signal R_x_x(l)') %Add an appropriate title to the graph [rxw,lag] = xcorr(x,w); %Find the cross correlation Rxw(l) between x(n) and w(n) figure(5); stem(lag,rxw); grid;% Open a new figure window(Fig.5), Plot a stem graph of Rxw(l) and include grid axis([-20 20 min(rxw) max(rxw)]) %Adjust the scale of X and Y axes for a clear view of few cycles of Rxw(l) xlabel('Lag Index l'); ylabel('R_x_w(l)');%Label the X and Y axes title('Cross Correlation Between x(n) and w(n) ')%Add an appropriate title to the graph [rww,lag] = xcorr(w,w); %Find the autocorrelation Rww(l) of w(n) figure(4);stem(lag,rww); grid; %Open a new figure window(Fig.4), %Plot a stem graph of Rww(l) and include grid axis([-20 20 min(rww) max(rww)]) %Adjust the scale of X and Y axes for a clear view of few cycles of Rww(l) xlabel('Lag Index l');

ylabel('R_w_w(l)');%Label the X and Y axes title('Autocorrelation Signal R_w_w(l)') %Add an appropriate title to the graph

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy