Lab Manual For Digital Signal Processing: Masters of Electrical Engineering
Lab Manual For Digital Signal Processing: Masters of Electrical Engineering
DATE:-
INDEX
SR NO. 1 DESCRIPTION FIND THE Z-TRANSFORMATION AND INVERSE Z-TRANSFORMATION. PAGE 1 DATE SIGN
FIND FREQUENCY RESPONSE OF LPF, HPF FILTERS AND OBTAIN POLE-ZERO MAP.
10
20
TO PERFORM MOVING AVERAGE FILTER AND ALSO PERFORM IT FOR SINE WAVE.
25
PACTICAL: - 1 AIM:- FIND THE Z-TRANSFORMATION AND INVERSE Z-TRANSFORMATION. PART 1[A] FIND THE Z-TRANSFOR OF THE FOLLOWING. 1. X (n) = 2 u (n) (1/2) ^n u (n). MATLAB FUNCTION:syms n ztrans(2 0-.5^n) OUTPUT:ans = (2*z)/ (z - 1) - z/ (z - 1/2) 4. X (n) = Sin (wn). MATLAB FUNCTION:syms n w ztrans(sin(w*n)) OUTPUT:ans = (z*sin(w))/(z^2 - 2*cos(w)*z + 1)
2. X (n) = 3 (2) ^n 4 (3) ^n. MATLAB FUNCTION:syms n ztrans(2^n*3-3^n*4) OUTPUT:ans = (3*z)/ (z - 2) - (4*z)/ (z - 3)
5. X (n) = a^n Cos (wn). MATLAB FUNCTION:syms n w a ztrans(a^n*cos(w*n)) OUTPUT:ans = -(z*(cos(w) z/a))/(a*(z^2/a^2 (2*z*cos(w))/a + 1))6. X (n) = a^n Cos (wn).
3. X (n) = Cos (wn). MATLAB FUNCTION:syms n w ztrans(cos(w*n)) OUTPUT:ans = (z*(z - cos(w)))/(z^2 - 2*cos(w)*z + 1)
6. X (n) = a^n Sin (wn). MATLAB FUNCTION:syms n w a ztrans(a^n*sin(n*w)) OUTPUT:ans = (z*sin(w))/(a*(z^2/a^2 - (2*z*cos(w))/a + 1)
DATE:-
PART: - 1[B] FIND INVERSE Z-TRANSFORM OF FOLLOWING. [1] X (z) =1/ (1-2*(z) -1) syms n syms z iztrans(z/(z-2)) ans = ans = 2^n 2*2^n + 4*(1/2) ^n [2] X (z) =(6-9*(z-1)/[1-2.5*(z)-1+(z)-2] syms n syms z iztrans((6*(z)^2-9*z)/((z)^2-2.5*z+1))
Ans= b= 1 0 0
DATE:-
a = 1.0000 1.0000 0.5000 r = 0.5000 - 0.5000i 0.5000 + 0.5000i p = -0.5000 + 0.5000i -0.5000 - 0.5000i k= 0
Ans= b= a= r= 1 2 1
p=
[5] X(z)=[1+2(z)^-1+(z)^-2]/[1-(z)^1+0.356*(z)^-2]
k=
2.8090
DATE:-
q= r=
Column 7 -0.4552
DATE:-
PRACTICAL: - 2 AIM: - FIND THE FREQUENCY RESPONSE OF LPF AND HPF FILTER. OBTAIN POLE ZERO MAP. [1] FIND FREQUENCY RESPONSE OF LOW PASS FILTER. ONE POLE LPF G(s) = (1-a) / (1 - a*z-1) MATLAB PROGRAM:a=0.8; num=[1-a,0] den=[1,-a] freqz(num,den) RESULT:num = 0.2000 0
DATE:-
[2] FIND FREQUENCY RESPONSE OF LOW PASS FILTER. ONE POLE ONE ZERO LPF G(s)= {(1-a)/(1+a)}*{(1+(a*z-1))/(1-(a*z-1))} MATLAB PROGRAM:a=0.9; num=[1-a,a-a^2] den=[1+a,-a^2-a] freqz(num,den) RESULT:num = 0.1000 0.0900
DATE:-
[3] FIND FREQUENCY RESPONSE OF HIGH PASS FILTER. ONE POLE HPF G(s) = (1-a) / (1+a*z-1) MATLAB PROGRAM:a=1.1; num=[1-a,0] den=[1,a] freqz(num,den)
RESULT:num = -0.1000 0
DATE:-
[4] FIND FREQUENCY RESPONSE OF HIGH PASS FILTER. ONE POLE ONE ZERO LPF= POLE AT z = -a ZERO AT Z= 1. G(s)=(z-1)/(z+a) MATLAB PROGRAM:a=1.2; num=[1,-1] den=[1,a] freqz(num,den) RESULT:num =1 -1 den = 1.0000 1.2000
DATE:-
[5] FOR THE GIVEN FUNCTION OBTAIN PLOE- ZERO DIAGRAM. X (Z) = [1-1.6180Z-1 + Z-2] / [1-1.5161 Z-1 +0.878 Z-2]. MATLAB PROGRAM:num=[1 -1.618 1] den=[1 -1.516 0.878] zplane(num,den) PROGRAM OUTPUT:-
DATE:-
PRACTICAL:-3 AIM: - TO DESIGN ANALOG FILTER AND DIGITAL FILTER AND WINDOW FUNCTION. PART [A]:- ANALOG FILTER DESIGN [1] For data sampled at 1000 Hz, design a 9th-order high pass Butterworth filter with cutoff frequency of 300 Hz, which corresponds to a normalized value of 0.6: MATLAB PROGRAM:[z,p,k] = butter(9,300/500,'high'); [sos,g] = zp2sos(z,p,k); % Convert to SOS form Hd = dfilt.df2tsos(sos,g); % Create a dfilt object h = fvtool(Hd); % Plot magnitude response set(h,'Analysis','freq') % Display frequency response PROGRAM OUTPUT:-
DATE:-
[2] For data sampled at 1000 Hz, design a 9th-order low pass Chebyshev Type I filter with 0.5 dB of ripple in the pass band and a pass band edge frequency of 300 Hz, which corresponds to a normalized value of 0.6: MATLAB PROGRAM:[z,p,k] = cheby1(9,0.5,300/500); [sos,g] = zp2sos(z,p,k); % Convert to SOS form Hd = dfilt.df2tsos(sos,g); % Create a dfilt object h = fvtool(Hd) % Plot magnitude response set(h,'Analysis','freq') % Display frequency response PROGRAM OUTPUT:-
DATE:-
[3] For data sampled at 1000 Hz, design a ninth-order lowpass Chebyshev Type II filter with stopband attenuation 20 dB down from the passband and a stopband edge frequency of 300 Hz, which corresponds to a normalized value of 0.6: MATLAB PROGRAM:[z,p,k] = cheby2(9,20,300/500); [sos,g] = zp2sos(z,p,k); % Convert to SOS form Hd = dfilt.df2tsos(sos,g); % Create a dfilt object h = fvtool(Hd); % Plot magnitude response set(h,'Analysis','freq') % Display frequency response
PROGRAM OUTPUT:-
DATE:-
[4] For data sampled at 1000 Hz, design a sixth-order lowpass elliptic filter with a passband edge frequency of 300 Hz, which corresponds to a normalized value of 0.6, 3 dB of ripple in the passband, and 50 dB of attenuation in the stopband: MATLAB PROGRAM:[z,p,k] = ellip(6,3,50,300/500); [sos,g] = zp2sos(z,p,k); % Convert to SOS form Hd = dfilt.df2tsos(sos,g); % Create a dfilt object h = fvtool(Hd) % Plot magnitude response set(h,'Analysis','freq') % Display frequency response PROGRAM OUTPUT:-
DATE:-
[1] DESIGN A 48TH-ORDER FIR BANDPASS FILTER WITH PASSBAND 0.35 0.65: MATLAB PROGRAM:b = fir1(48,[0.35 0.65]); freqz(b,1,512) PROGRAM OUTPUT:-
DATE:-
[2]DESIGN A 30TH-ORDER LOWPASS FILTER AND OVERPLOT THE DESIRED FREQUENCY RESPONSE WITH THE ACTUAL FREQUENCY RESPONSE: MATLAB PROGRAM:f = [0 0.6 0.6 1]; m = [1 1 0 0]; b = fir2(30,f,m); [h,w] = freqz(b,1,128); plot(f,m,w/pi,abs(h)) legend('Ideal','fir2 Designed') title('Comparison of Frequency Response Magnitudes')
PROGRAM OUTPUT:-
DATE:-
[1] CREATE A 64-POINT HAMMING WINDOW AND DISPLAY THE RESULT IN WVTOOL. MATLAB PROGRAM:L=64; wvtool(hamming(L))
PROGRAM OUTPUT:-
DATE:-
[2] CREATE A 200-POINT KAISER WINDOW WITH A BETA OF 2.5 AND DISPLAY THE RESULT USING WVTOOL
PROGRAM OUTPUT:-
DATE:-
[3]CREATE A 64-POINT BARTLETT WINDOW AND DISPLAY THE RESULT USING WVTOOL. MATLAB PROGRAM:L=64; wvtool(bartlett(L))
PROGRAM OUTPUT:-
DATE:-
[4] CREATE A 64-POINT BLACKMAN WINDOW AND DISPLAY THE RESULT USING WVTOOL. MATLAB PROGRAM:L=64; wvtool(blackman(L))
PROGRAM OUTPUT:-
DATE:-
PRACTICAL:-4 AIM: - FIND THE CONVOLUTION OF TWO SEQUENCES. x (n) = [ 1 , 2 , 3 , 1] and h (n) = [4 , 3 , 2 , 1].
1. USING CONV FUNCTION MATLAB PROGRAM:seq1=input('enter the x(n) array=') %[ 1 2 3 1]; l1=length(seq1)-1 n1=0:1:l1 subplot(3,1,1);stem(n1,seq1) seq2=input(' enter the h(n) array=') %[ 4 3 2 1]; l2=length(seq2)-1 n2=0:1:l2 subplot(3,1,2);stem(n1,seq2) seq3=conv(seq1,seq2) l3=length(seq3)-1 n3=0:1:l3 subplot(3,1,3);stem(n3,seq3) WORKPACE OUTPUT:enter the x(n) array=[1 2 3 1] seq1 = 1 l1 = 3 n1 = 0 1 2 3 2 3 1
seq3 = 4 l3 = 6 n3 = 0 1 2 3 4 5 6 11 20 18 11 5 1
DATE:-
PROGRAM OUTPUT:-
2. USING ALGORITHM (WITHOUT CONV FUNCTION) MATLAB PROGRAM:clc; clear all; x= input('input sequence x:') h=input ('input sequense h:') n1= length(x); %finds length of seq x n2= length(h); %finds the length of seq h N= n1+n2-1; %finds the length of convolution m= n2+2*n1; p=1; for v=1:m if v<=n1 h1(v)=0; elseif v>n1+n2 h1(v)=0; else h1(v)=h(p) p=p+1 end
21 SARVAJANIK COLLAGE OF ENGINEERING AND TECHNOLOGY- SURAT
DATE:-
end nz=n1+1 for n=1:N y(n)=0; for k=1:n1 y(n)= y(n)+x(k)*h1(n+nz-k) end end
DATE:-
y= 4 y= 4 y= 4 11 y= 4 11 y= 4 11 y= 4 11 y= 4 11 y= 4 11 20 y= 4 11 20 y= 4 11 20 y= 1 8 2 3
4 11 20 y=
4 11 20 14 y= 4 11 20 18 y= 4 11 20 18 y= 4 11 20 18 y= 4 11 20 18 y= 4 11 20 18 11 y= 4 11 20 18 11 y= 4 11 20 18 11 y= 4 11 20 18 11 y= 4 11 20 18 11 5 3 0 0 8 2 0
DATE:-
y= 4 11 20 18 11 y= 4 11 20 18 11 y= 5 0 5 0
4 11 20 18 11 y= 4 11 20 18 11
DATE:-
PRACTICAL: - 5 AIM:-TO PERFORM MOVING AVERAGE FILTER. ALSO PERFORM FOR SINEWAVE. PART [A]:- MOVING AVERAGE FILTER MATLAB PROGRAM: clc; clear all; n=50; % no of sample m=0:1:n-1 s=2*m.*(0.9.^m); % s-uncorrupted signal subplot(4,1,1); stem(m,s) %stem (x,y)plot the data sequence y at the value specified in x xlabel('n'); ylabel('Amplitude of S(n)'); %random noise signal d=rand(n,1)-0.5; % s-randomnoise signaql subplot(4,1,2); stem(m,d); xlabel('n');ylabel('Noise d(n)'); %corrupted signal x=s+d'; subplot(4,1,3); stem(m,x) xlabel('n');ylabel('corrupted signal x(n)'); figure; subplot(2,1,1); plot(m,s,'b',m,d,'r',m,x,'g') xlabel('Time');ylabel('Amplitude of signal'); legend('s[n]','d[n]','x[n]'); M=input('Number of input samples'); b=ones(M,1)/M; y=filter(b,1,x); subplot(2,1,2) plot(m,s,'b',m,y,'r') legend('s[n]','y[n]'); xlabel('Time');ylabel('Amplitude of signal');
DATE:-
PROGRAM OUTPUT: - :
DATE:-
PART [B]:- MOVING AVERAGE FILTER FOR SINE WAVE WRITE DOWN THE M-FILE FOR THE UP SAMPLING OF A SINUSOIDAL INPUT SIGNAL. TAKE LENGHT OF INPUT SIGNAL = 50. INPUT SIGNAL FREQUENCY = 50 AND SAMPLING RATE = 3. MATLAB PROGRAM:clc; clear all; n=50; % total number of samples %m= 0:1:n-1; x=-pi:(7.28*(pi/180)):pi; s=sin(x); %s=plot(x,sin(x));grid on subplot(4,1,1); stem(x,s) xlabel('n-sample no');ylabel('amplitude of s(n)'); %generate random noise signal d=rand(n,1)-0.5; % d-random noise signal subplot(4,1,2); stem(x,d); xlabel('n');ylabel('Noise d(n)'); %currupted signal w=s+d'; subplot(4,1,3); stem(x,w); xlabel('n');ylabel('currupted signal w(n)'); figure; subplot(2,1,1); plot(x,s,'b',x,d,'r',x,w,'g') xlabel('Time'); ylabel('Amplitude of signal'); legend( 's(n)','d(n)','w(n)'); % filtering of signal M=input('Number of input samples= '); b=ones(M,1)/M; y=filter(b,1,x); subplot(2,1,2); plot(x,s,'b',x,y,'r');
DATE:-
PROGRAM OUTPUT:-
DATE:-
SARVAJANIK COLLAGE OF ENGINNERING AND TECHNOLOGY SURAT-GUJARAT SUBJECT: - DIGITAL SIGNAL PROCESSING PREPARED BY:VISHAL B. RATHOD. KRUNAL SHAH. VIDHY MODY. KOMAL GAMIT.