Sei sulla pagina 1di 67

Date: 23-09-2013 M.E.

Electronics & Communication Engineering (VLSI &Embedded Systems Design) Semester: III Subject Name: Digital Signal Processing Subject Code: 735206 Lab-Assignment: Problem 1 Design and Implement a Digital Butterworth Low Pass System with the following specifications: o Passband Frequency: 1000Hz o Passband Attenuation: 1db o Stopband Frequency: 12000Hz o Stopband Attenuation: 80db o Sampling Rate: 16000Hz Obtain and Plot the impulse response of the given digital low pass filter. Obtain and Plot the Magnitude and Phase responses of the given digital low pass filter. Verify the cut-off frequency of the filter from its Magnitude Response. Implement the Difference Equation by passing the samples of a sinusoidal signal of amplitude 0.9, frequency 1000Hz and number of cycles equal to 1000. Verify the output signal amplitude with the theoretical and expected amplitude.

MATLAB Code:clc; clear all; close all; fs=16000; ts=1/fs; fp=1000; fstop=12000; rp=1; rs=80; ap=10^(-rp/20); as=10^(-rs/20); ap_lin=(1/(ap*ap))-1; as_lin=(1/(as*as))-1; Wp=2*pi*fp; Ws=2*pi*fstop;

Jay Kothari

Page 1 of 67

N=0.5*(log(ap_lin)-log(as_lin))/(log(Wp)-log(Ws)); N=ceil(N); disp(N); Wc=Wp/((ap_lin)^(1/(2*N))); k=0:1:N-1; sk=Wc*exp(j*(((pi*(2*k+1)/(2*N))) +(pi/2))); num=Wc^N; den=poly(sk); %%Frequency Transformation [bm,ak]=bilinear(num,den,fs); figure impz(bm,ak); figure freqz(bm,ak); title('Frequency Response') A=0.9; f0=1000; ts=1/fs; cycle=1000; D=cycle/f0; t=0:ts:D-ts %%Sinusoidal Signal Passing through Filter x=A*sin(2*pi*f0*t); m=990*(fs/f0); y=filter(bm,ak,x); figure('Name','Sin() signal response of Butterworth Filter','NumberTitle','off') subplot(2,1,1) plot(t(m:end),x(m:end)); title('Sine Signal') ylabel('Magnitude'); xlabel('Time'); subplot(2,1,2) plot(t(m:end),y(m:end)) ylabel('Magnitude'); xlabel('Time'); title('Sine Signal Response')
Jay Kothari Page 2 of 67

OUTPUT:-

Jay Kothari

Page 3 of 67

Jay Kothari

Page 4 of 67

Problem 2 Design and Implement a Digital Chebyshev Low Pass System with the following specifications: o Passband Frequency: 1000Hz o Passband Attenuation: 1db o Stopband Frequency: 12000Hz o Stopband Attenuation: 80db o Sampling Rate: 16000Hz Obtain and Plot the impulse response of the given digital low pass filter. Obtain and Plot the Magnitude and Phase responses of the given digital low pass filter. Verify the cut-off frequency of the filter from its Magnitude Response. Implement the Difference Equation by passing the samples of a sinusoidal signal of amplitude 0.9, frequency 1000Hz and number of cycles equal to 1000. Verify the output signal amplitude with the theoretical and expected amplitude.

MATLAB Code:clc clear all close all fpass = 1000; fstop = 12000; fs = 16000; nf = fs/2; ts = 1/fs; Wpass = 2*pi*fpass; Wstop = 2*pi*fstop; rp = 2; rs = 20; ap = 10^(-rp/20); as = 10^(-rs/20); epsilon = sqrt((1/(ap*ap))-1); alp = sqrt((1/(as*as))-1); N = acosh(alp/epsilon)/acosh(Wstop/Wpass); N = ceil(N); k = 0:1:2*N-1;

Jay Kothari

Page 5 of 67

uk = ((2*k+1)*pi)/(2*N); v = asinh(1/epsilon)/N; sk = Wpass*(sin(uk)*sinh(v)+j*cos(uk)*cosh(v)); sk = sk(N+1:end); disp(sk); %% Frequency Transformation zk = exp(sk*ts); ak = poly(zk); if(mod(N,2)==0) kd = sum(ak)/sqrt(1+(epsilon^2)); else kd = sum(ak); end bm= kd; figure impz(bm, ak); figure freqz(bm, ak); title('Frequency Response') %%Sinusoidal Signal A=0.9; f0=1000; ts=1/fs; cycle=1000; D=cycle/f0; t=0:ts:D-ts; x=A*sin(2*pi*f0*t); m=990*(fs/f0); y=filter(bm,ak,x); figure subplot(2,1,1)
Jay Kothari Page 6 of 67

plot(t(m:end),x(m:end)); title('Sine Signal') ylabel('Magnitude'); xlabel('Time'); subplot(2,1,2) plot(t(m:end),y(m:end)); title('Sine Signal Response') ylabel('Magnitude'); xlabel('Time');

OUTPUT:Command Window Output:1.0e+003 * -2.5253 - 5.1104i -2.5253 + 5.1104i

Jay Kothari

Page 7 of 67

Jay Kothari

Page 8 of 67

Problem 3 Design and Implement an FIR system of order 127 and using Hamming Window samples and cut-off frequency 2000Hz and sampling rate fs = 32000. Obtain and Plot the impulse response of the given digital low pass filter. Obtain and Plot the Magnitude and Phase responses of the given digital low pass filter. Verify the cut-off frequency of the filter from its Magnitude Response. Implement the Difference Equation by passing the samples of a sinusoidal signal of amplitude 0.9, frequency 1000Hz and number of cycles equal to 1000. Verify the output signal amplitude with the theoretical and expected amplitude.

MATLAB Code:clc; clear all; close all; cf=2000; order = 127; win = window(@hamming,order); fs=32000; nf=fs/2; ts=1/fs; ncf=cf/nf; bm=fir1(order-1,ncf,'low',win); ak=1; figure impz(bm,ak); figure freqz(bm,ak); title('Frequency Response'); A=0.9; f0=1000; cycles=1000; D=cycles/f0; t=0:ts:D-ts; x=A*sin(2*pi*f0*t); y=filter(bm , ak, x);
Jay Kothari Page 9 of 67

m=fix(990*(fs/f0)); figure subplot(2,1,1); plot(t(m+1:end),x(m+1:end)); title('Sine Signal') ylabel('Magnitude'); xlabel('Time'); subplot(2,1,2); plot(t(m+1:end),y(m+1:end)); title('Sine Signal Response') ylabel('Magnitude'); xlabel('Time');

Jay Kothari 67

Page 10 of

OUTPUT:-

Jay Kothari 67

Page 11 of

Jay Kothari 67

Page 12 of

Problem 4 Calculate and plot Cn = (2*A*tau/T)*sinc(2*n*f0*tau) with A = 10, T = 1 milli sec and tau = 0.1 milli sec on n*f0 axis to depict 5 zero crossing points on both the negative and positive frequency axes. Repeat the above with T = 10000 milli sec and compare the following obtained in both the cases: o First Zero Crossing Frequency o Total Average Power, Partial and Percentage average powers contributed by the complex exponentials distributed between positive and negative first zero crossing frequencies. o Inter Sample Distance in the frequency domain. MATLAB Code:clc clear all close all msec=10^(-3); A = 10; %% For T=0.1 msec T=1*msec; f0 = 1/T; tau = 0.1*T; fz1 = 1/(2*tau); disp(['First zero crossing frequency : ',num2str(fz1)]) N1 = fz1/f0; N5 = 5*N1; n = -N5: 1: N5; cn = (2*A*tau/T)*sinc(2*n*f0*tau); figure subplot(2,1,1) stem(n*f0,cn); title('Sinc Function(T=0.1*msec)') ylabel('Magnitude'); xlabel('n*fs'); TAP = 2*A*A*tau/T; N5 = 5*N1;
Jay Kothari 67 Page 13 of

n = -N1: 1: N1; cn = (2*A*tau/T)*sinc(2*n*f0*tau); PAP = sum(cn.*cn); PCAP = (PAP/TAP)*100; ISD=f0; disp(['Total Average Power:',num2str(TAP)]); disp(['Partial Average Power:',num2str(PAP)]); disp(['Percentage Average Power:',num2str(PCAP)]); disp(['Ineter Sample Distance:',num2str(ISD)]); %% For T=10000 msec T=10000*msec; f0 = 1/T; tau=0.1*msec; fz1 = 1/(2*tau); N1 = fz1/f0; N5 = 5*N1; n = -N5: 1: N5; cn = (2*A*tau/T)*sinc(2*n*f0*tau); subplot(2,1,2) stem(n*f0,cn); title('Sinc Function(T=10000*msec)') ylabel('Magnitude'); xlabel('n*fs'); TAP = 2*A*A*tau/T; N5 = 5*N1; n = -N1: 1: N1; cn = (2*A*tau/T)*sinc(2*n*f0*tau); PAP = sum(cn.*cn); PCAP = (PAP/TAP)*100; ISD=f0; disp(['First zero crossing frequency : ',num2str(fz1)]) disp(['Total Average Power:',num2str(TAP)]); disp(['Partial Average Power:',num2str(PAP)]); disp(['Percentage Average Power:',num2str(PCAP)]);
Jay Kothari 67 Page 14 of

disp(['Ineter Sample Distance:',num2str(ISD)]);

OUTPUT:Command Window:First zero crossing frequency : 5000 Total Average Power:20 Partial Average Power:18.0576 Percentage Average Power:90.2878 Ineter Sample Distance:1000

First zero crossing frequency : 5000 Total Average Power:0.002 Partial Average Power:0.0018056 Percentage Average Power:90.2823 Ineter Sample Distance:0.1

Jay Kothari 67

Page 15 of

Problem 5 Implement DFT and IDFT functions using the related mathematical relations as the basis. Find the DFT samples of X(k) of a rectangular pulse of amplitude 10 and having its pulse width equal to 2 msecs. Plot the magnitude and phase parts of X(k) along the frequency axis f. Find the average power of the above signal using time domain and frequency domain signal samples Find the DFT samples of X(k) of an exponentially decaying pulse given by alpha*exp(alpha*t)*u(t). Plot the magnitude and phase parts of X(k) along the frequency axis f. Find the average power of the above signal using time domain and frequency domain signal samples Find the DFT samples of X(k) of a triangular pulse of maximum amplitude 100 and pulse width 4 msec and centered around origin. Plot the magnitude and phase parts of X(k) along the frequency axis f. Find the average power of the above signal using time domain and frequency domain signal samples

MATLAB Code:clc clear all close all A = 10; ms = 10^-3; tau = 1*ms; fs = 32000; ts = 1/fs; nq = fs/2; % Rectangular Pulse L = tau/ts; M = 2*L + 1 N = input('Enter the value of N>M : '); x = [ones(1,1) ones(1,L) zeros(1,N-M) ones(1,L)]; n = 0:1:N-1; figure('Name','Rectangular pulse','NumberTitle','off')
Jay Kothari 67 Page 16 of

plot(n,x); title('Rectangular Pulse') X = dft(x,N); k = 0:1:N-1; f = k*fs/N; figure('Name','DFT version of rectangular pulse','NumberTitle','off') subplot(2,1,1); stem(f, abs(X)); title('Frequency Response'); subplot(2,1,2); stem(f, angle(X)); title('Phase Response'); %Exponentially Decaying Function alp = 10000; fc = alp/(2*pi); fm = 100*fc; fs = 2*fm; ts = 1/fs; T = 100/alp; f0 = 1/T; N = T/ts; n = 0:1:N-1; x = ts*alp*exp(-alp*n*ts); figure plot(n,x); title('Exponential decaying signal') X = dft(x,N); k = 0:1:N-1; f = k*fs/N; figure('Name','DFT version of exponential decaying signal','NumberTitle','off') subplot(2,1,1);
Jay Kothari 67 Page 17 of

stem(f, abs(X)); title('Frequncy Response'); subplot(2,1,2); stem(f, angle(X)); title('Phase Response'); disp(['fc = ',num2str(fc)]); TAP = (alp * (1 - exp(-2*alp*T)))/(2*T); N1 = fix(fc/f0); n = -N1:1:N1; cn = (alp*f0)./(alp+j*2*pi*n*f0); PAP = sum(abs(cn).*abs(cn)); PCAP = PAP * 100 / TAP; disp(['Partial Average Power of the exponentially decaying curve :',num2str(PAP)]); disp(['Total Average Power of the exponentially decaying curve : ',num2str(TAP)]); disp(['Percentage Average Power of the exponentially decaying curve : ',num2str(PCAP)]); % Triangular Pulse tau = 2*ms; fs = 32000; ts = 1/fs; nq = fs/2; t = -tau:ts:-ts; x1 = 50*t + 100; t = 0:ts:tau; x2 = -50*t + 100; T = 4*tau; f0 = 1/T; L = tau/ts; M = 2*L + 1 N = input('Enter the value of N>M : '); x = [x2 zeros(1,N-M) x1]; X = dft(x,N);
Jay Kothari 67 Page 18 of

k = 0:1:N-1; f = k*fs/N; figure subplot(2,1,1); stem(f, abs(X)); subplot(2,1,2); stem(f, angle(X)); TAP = 1/T*sum(x.^2) N1 = T/(2*tau); fz1 = 1/(2*tau); k1 = fz1*N/fs; X1 = [X(1:k1+1) X(N-k1:end)]; PAP = 1/(2*k1)*sum(abs(X1).^2) PCAP = 100* PAP/TAP

OUTPUT:Command Window:M= 65 Enter the value of N>M : 128 fc = 1591.5494 Partial Average Power of the exponentially decaying curve :245817.2134 Total Average Power of the exponentially decaying curve : 500000 Percentage Average Power of the exponentially decaying curve : 49.1634 M= 129 Enter the value of N>M : 256 TAP = 1.6109e+008 PAP = 7.6577e+007 PCAP = 47.5376

Jay Kothari 67

Page 19 of

Jay Kothari 67

Page 20 of

Jay Kothari 67

Page 21 of

Problem 6 Calculate and plot Cn = (*f0)/(+j*2**n*f0) with = 10000, f0 = 100Hz on n*f0 axis to depict 100 frequency components on both the negative and positive frequency axes. Identify the first Half Power frequency. Calculate and display the Total Average Power of a of the signal xp(t). Calculate the partial amount of average power contributed by the complex exponentials between the Half-Power Frequency points on the frequency axis. Find the percentage of average power contributed by the same complex exponentials. o Repeat the above exercise with = 10000.

MATLAB Code:clc clear all close all f0 = 100; %% For alp=10000 alp = 10000; T = 1/f0; N = 100; n = -N:1:N; cn = (alp*f0)./(alp+j*2*pi*n*f0); figure stem(n*f0, abs(cn)); title('Frequency Response'); xlabel('Frequency'); ylabel('Magnitude'); figure stem(n*f0, angle(cn)); title('Phase Response'); xlabel('Frequency'); ylabel('Magnitude'); TAP = (alp/(2*T))*(1-exp(-2*alp*T)); fc = alp/(2*pi); disp(['Half Power Frequency:',num2str(fc)]);
Jay Kothari 67 Page 22 of

N1 = fix(fc/f0); n = -N1:1:N1; cn = (alp*f0)./(alp+j*2*pi*n*f0); PAP = sum(abs(cn).*abs(cn)); PCAP = PAP*100/TAP; disp(['Partial Average Power :',num2str(PAP)]); disp(['Total Average Power : ',num2str(TAP)]); disp(['Percentage Average Power : ',num2str(PCAP)]); OUTPUT:Command Window:Half Power Frequency:1591.5494 Partial Average Power :245817.2134 Total Average Power : 500000 Percentage Average Power : 49.1634

Jay Kothari 67

Page 23 of

Jay Kothari 67

Page 24 of

Problem 7 Find and plot the impulse response of the discrete time system equivalent to RC system. Apply DFT/FFT for the obtained impulse response to get H(k) and plot the magnitude and Phase responses of the system across frequency values. Identify the half-power frequencies from the obtained plot. Implement the difference equation of the system by passing a sinusoidal signal of frequency f0 and amplitude 10. MATLAB Code:clc clear all close all kohms = 10^3; mfarads = 10^(-6); R = 10*kohms; C = 0.01*mfarads; alp = 1/(R*C); fc = alp/(2*pi); fm = 100*fc; fs = 2*fm; ts = 1/fs; a = exp(-alp*ts); T = 100/alp; N = T/ts; n = 0:1:N-1; h = alp*ts*a.^n; impz(h,1); title('Impulse Response in Time Domain'); H = dft(h, N); k = 0:1:N-1; f = k*fs/N; figure subplot(2,1,1); plot(f, abs(H));
Jay Kothari 67 Page 25 of

title('Frequency Response'); xlabel('Frequency'); ylabel('Magnitude');subplot(2,1,2); plot(f, angle(H)); title('Phase Response'); xlabel('Frequency'); ylabel('Magnitude'); bm = alp*ts; ak = [1, -a]; figure impz(bm, ak, 512); title('Impulse Response ') figure freqz(bm, ak) title('Frequency Response') A = 10; f0 = 1000; cycles = 1000; D = cycles/f0; t = 0:ts:D-ts; x = A*sin(2*pi*f0*t); y = filter(bm, ak, x); m = fix(990*fs/f0); figure subplot(2,1,1) plot(t(m+1:end), x(m+1:end)); title('Sine Signal ') ylabel('Magnitude'); xlabel('Time'); subplot(2,1,2) plot(t(m+1:end), y(m+1:end)); title('Sine Signal Response') ylabel('Magnitude'); xlabel('Time');
Jay Kothari 67 Page 26 of

OUTPUT:-

Jay Kothari 67

Page 27 of

Jay Kothari 67

Page 28 of

Jay Kothari 67

Page 29 of

Problem 8 Implement Goertzel Function on MATLAB and using the function implement a DTMF Signal Detection System on MATLAB. Matlab Code: close all;clear all figure(1) % DTMF tone generator fs=8000; t=[0:1:204]/fs; x=zeros(1,length(t)); x(1)=1; y852=filter([0 sin(2*pi*852/fs) ],[1 -2*cos(2*pi*852/fs) 1],x); y1209=filter([0 sin(2*pi*1209/fs) ],[1 -2*cos(2*pi*1209/fs) 1],x); y7=y852+y1209; subplot(2,1,1);plot(t,y7);grid ylabel('y(n) DTMF: number 7'); xlabel('time (second)') Ak=2*abs(fft(y7))/length(y7);Ak(1)=Ak(1)/2; f=[0:1:(length(y7)-1)/2]*fs/length(y7); subplot(2,1,2);plot(f,Ak(1:(length(y7)+1)/2));grid ylabel('Spectrum for y7(n)'); xlabel('frequency (Hz)'); figure(2) % DTMF detector (use Goertzel algorithm) b697=[1]; a697=[1 -2*cos(2*pi*18/205) 1]; b770=[1]; a770=[1 -2*cos(2*pi*20/205) 1]; b852=[1]; a852=[1 -2*cos(2*pi*22/205) 1]; b941=[1]; a941=[1 -2*cos(2*pi*24/205) 1]; b1209=[1]; a1209=[1 -2*cos(2*pi*31/205) 1]; b1336=[1]; a1336=[1 -2*cos(2*pi*34/205) 1]; b1477=[1]; a1477=[1 -2*cos(2*pi*38/205) 1] [w1, f]=freqz([1 -exp(-2*pi*18/205)],a697,512,8000); [w2, f]=freqz([1 -exp(-2*pi*20/205)],a770,512,8000); [w3, f]=freqz([1 -exp(-2*pi*22/205)],a852,512,8000); [w4, f]=freqz([1 -exp(-2*pi*24/205)],a941,512,8000); [w5, f]=freqz([1 -exp(-2*pi*31/205)],a1209,512,8000); [w6, f]=freqz([1 -exp(-2*pi*34/205)],a1336,512,8000); [w7, f]=freqz([1 -exp(-2*pi*38/205)],a1477,512,8000); subplot(2,1,1);plot(f,abs(w1),f,abs(w2),f,abs(w3), ... f,abs(w4),f,abs(w5),f,abs(w6),f,abs(w7));grid
Jay Kothari 67 Page 30 of

xlabel('Frequency (Hz)'); ylabel('BPF frequency responses'); yDTMF=[y7 0]; y697=filter(1,a697,yDTMF); y770=filter(1,a770,yDTMF); y852=filter(1,a852,yDTMF); y941=filter(1,a941,yDTMF); y1209=filter(1,a1209,yDTMF); y1336=filter(1,a1336,yDTMF); y1477=filter(1,a1477,yDTMF); m(1)=sqrt(y697(206)^2+y697(205)^2- ... 2*cos(2*pi*18/205)*y697(206)*y697(205)); m(2)=sqrt(y770(206)^2+y770(205)^2- ... 2*cos(2*pi*20/205)*y770(206)*y770(205)); m(3)=sqrt(y852(206)^2+y852(205)^2- ... 2*cos(2*pi*22/205)*y852(206)*y852(205)); m(4)=sqrt(y941(206)^2+y941(205)^2- ... 2*cos(2*pi*24/205)*y941(206)*y941(205)); m(5)=sqrt(y1209(206)^2+y1209(205)^2- ... 2*cos(2*pi*31/205)*y1209(206)*y1209(205)); m(6)=sqrt(y1336(206)^2+y1336(205)^2- ... 2*cos(2*pi*34/205)*y1336(206)*y1336(205)); m(7)=sqrt(y1477(206)^2+y1477(205)^2- ... 2*cos(2*pi*38/205)*y1477(206)*y1477(205)); m=2*m/205; th=sum(m)/4; %based on empirical measurement f=[ 697 770 852 941 1209 1336 1477]; f1=[0 4000]; th=[ th th]; x subplot(2,1,2);stem(f,m);grid hold; plot(f1,th); xlabel('Frequency (Hz)'); ylabel('Absolute output values');

Output:

Jay Kothari 67

Page 31 of

Jay Kothari 67

Page 32 of

Problem 9 Assuming an ideal and symmetrical frequency response of a low pass filter with the following specifications given by o H(w) = 1; for 0 w /2 and o H(w) = 0; Method. MATLAB Code: clc; clear all; close all; f = [0 0.25 0.25 1]; m = [1 1 0 0]; b = fir2(128,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' Output: for /2 < w

Design a FIR system with the order given by 128 (Even number) using Frequency Sampling

Jay Kothari 67

Page 33 of

Problem 10 Calculate and plot Cn = (2*A*tau/T)*sinc(2*n*f0*tau) with A = 10, f0 = 1000Hz and tau = 0.1* T on n*f0 axis to depict 5 zero crossing points on both the negative and positive frequency axes. Identify the first zero crossing frequency. Calculate and display the Total Average Power of a Rectangular Pulse Train. Calculate the partial amount of average power contributed by the complex exponentials between the first zero crossing points on the frequency axis. Find the percentage of average power contributed by the same complex exponentials.

Repeat the above exercise with tau = 0.05*T.

MATLAB Code: clc clear all close all %Case A A = 10; mili = 10^-3; T = 1*mili; f0 = 1/T; tau = 0.1*mili; fz1 = 1/2/tau; disp(['First zero crossing frequency for T = 1ms: ',num2str(fz1)]); f5 = 5*fz1; n = -f5/f0:1:f5/f0; cn = (2*A*tau/T)*sinc(2*n*f0*tau); figure('Name','plot of Cn upto 5zero crossing frequency','NumberTitle','off') subplot(2,1,1); stem(n*f0,cn); title('n*f0 vs Cn plot for 5 zero crossing frequency for T=1ms'); grid on; % Total Average Power TAP = 2*A^2 * tau/T; N1 = T/(2*tau); n = -N1:1:N1; % Partial Average Power PAP = sum(cn.*cn); % Partial Average Power Contributed by exponential PACP = 100*PAP/TAP; disp(['Total Average Power for Tau = 0.1ms: ',num2str(TAP)]); disp(['Partial Average Power for Tau = 0.1ms: ',num2str(PAP)]); disp(['Percentage Average Power Contributed by Exponential for Tau = 0.1ms: ',num2str(PACP)]);
Jay Kothari 67 Page 34 of

disp(['Intersample Distance In Frequency Domain for Tau = 0.1ms: ',num2str(f0)]); %Case B A = 10; mili = 10^-3; T = 1*mili; f0 = 1/T; tau = 0.05*mili; fz1 = 1/2/tau; disp(['First zero crossing frequency for Tau = 0.05ms: ',num2str(fz1)]); f5 = 5*fz1; n = -f5/f0:1:f5/f0; cn = (2*A*tau/T)*sinc(2*n*f0*tau); subplot(2,1,2); stem(n*f0,cn); title('n*f0 vs Cn plot for 5 zero crossing frequency for T=0.05ms'); grid on; % Total Average Power TAP = 2*A^2 * tau/T; N1 = T/(2*tau); n = -N1:1:N1; % Partial Average Power PAP = sum(cn.*cn); % Partial Average Power Contributed by exponential PACP = 100*PAP/TAP; disp(['Total Average Power for Tau = 0.05ms: ',num2str(TAP)]); disp(['Partial Average Power for Tau = 0.05ms: ',num2str(PAP)]); disp(['Percentage Average Power Contributed by Exponentioal for Tau = 0.05ms: ',num2str(PACP)]); disp(['Intersample Distance In Frequency Domain for Tau = 0.05ms: ',num2str(f0)]);

Jay Kothari 67

Page 35 of

OUTPUT:Command Window:First zero crossing frequency : 5000 Total Average Power:20 Partial Average Power:18.0576 Percentage Average Power:90.2878

First zero crossing frequency : 10000 Total Average Power:10 Partial Average Power:9.0283 Percentage Average Power:90.2827

Jay Kothari 67

Page 36 of

Problem 11 Given three sinusoids with the following amplitudes and phases x1 t 5 cos2 500 t x2 t 5 cos2 1200 t 0.25 x3 t 5 cos2 1800 t 0.5

Create a MATLAB program to sample each sinusoid and generate a sum of three

sinusoids, that is x(n) = x1(n)+x2(n)+x3(n) using a sampling rate of 8000Hz and plot the sum x(n) over a range of time that will exhibit approximately 0.1 second. Use the user defined dft() function and MATLAB built-in function fft() to compute the

DFT coefficients and plot and examine the examine the spectrum of the signal.

MATLAB Code:clc; clear all; close all; fs=8000; ts=1/fs; n=0:(0.1*fs)-1; x1=5*cos(2*pi*500*ts*n); x2=5*cos(2*pi*1200*ts*n+0.25*pi); x3=5*cos(2*pi*1800*ts*n+0.5*pi); x=x1+x2+x3; stem(n,x) title('Sine signals Summation (x signal)') xlabel('n(samples)') ylabel('Magnitude') M=length(x); %DFT X=dft(x,M); k=0:M-1;

Jay Kothari 67

Page 37 of

f=k*fs/M; figure subplot(2,1,1) plot(f,abs(X)); title('Mangnitude Vs Frequency(DFT)'); xlabel('Freq.') ylabel('Magnitude') subplot(2,1,2) plot(f,angle(X)) title('Phase Vs Frequency(DFT)'); xlabel('Freq.') ylabel('Magnitude') %FFT X1=fft(x,M); figure subplot(2,1,1) plot(f,abs(X1)); title('Magnitude Vs Frequency(FFT)'); xlabel('Freq.') ylabel('Magnitude') subplot(2,1,2) plot(f,angle(X1)) title('Phase Vs Frequency(FFT)'); xlabel('Freq.') ylabel('Magnitude')

Jay Kothari 67

Page 38 of

OUTPUT:-_

Jay Kothari 67

Page 39 of

Jay Kothari 67

Page 40 of

Problem 12 Using the user defined dft() function obtain the spectral coefficients of o Rectangular Window o Hamming Window o Hanning Window o Blackman Window Assume window length of 255 and plot the magnitude and phase spectra of all the windows individually and compare them MATLAB Code:clc; close all; clear all; win=window(@rectwin,255); figure subplot(2,4,1) plot(win); bm=dft(win,255) ak=1; subplot(2,4,5); freqz(bm, ak); title('Magnitude & Phase Spectra of Rectangular Window'); win=window(@hann,255); figure subplot(2,4,2); plot(win); bm=dft(win,255); ak=1; subplot(2,4,6); freqz(bm, ak); title('Magnitude & Phase Spectra of Hanning Window'); win=window(@hamming,255); figure

Jay Kothari 67

Page 41 of

subplot(2,4,3); plot(win); bm=dft(win,255); ak=1; subplot(2,4,7); freqz(bm, ak); title('Magnitude & Phase Spectra of Hamming Window'); win=window(@blackman,255); figure subplot(2,4,4); plot(win); bm=dft(win,255); ak=1; subplot(2,4,8); freqz(bm, ak); title('Magnitude & Phase Spectra of Blackman Window');

Jay Kothari 67

Page 42 of

OUTPUT:-

Jay Kothari 67

Page 43 of

Jay Kothari 67

Page 44 of

Problem 13 Using MATLAB, design a fourth-order digital lowpass Chebyshev filter with cut-off frequency of 1.5kHz and a 0.5dB ripple at a sampling rate of 8,000Hz. Determine the transf er function and difference equation Plot the Magnitude and Phase Response of the filter.

MATLAB Code:-

clc; close all; clear all; N=4; fpass = 1500; fs = 8000; nf = fs/2; ts = 1/fs; Wpass = 2*pi*fpass; rp = 0.5; ap = 10^(-rp/20); epsilon = sqrt((1/(ap*ap))-1); k = 0:1:2*N-1; uk = ((2*k+1)*pi)/(2*N); v = asinh(1/epsilon)/N; sk = Wpass*(sin(uk)*sinh(v)+j*cos(uk)*cosh(v)); sk = sk(N+1:end); disp(sk); zk = exp(sk*ts); ak = poly(zk); if(mod(N,2)==0) kd = sum(ak)/sqrt(1+(epsilon^2)); else kd = sum(ak); end
Jay Kothari 67 Page 45 of

bm= kd ; figure freqz(bm,ak); title('Magnitude and Phase Response'); TF=tf(bm,ak)

OUTPUT:Command Window:1.0e+003 * -1.6527 - 9.5780i -3.9899 - 3.9673i -3.9899 + 3.9673i -1.6527 + 9.5780i

Transfer function: (0.303-1.31e-017i) ---------------------------------------------------------s^4 - (1.662-7.772e-016i) s^3 + (1.665-1.332e-015i) s^2 (0.9257-7.772e-016i)s +(0.244-2.359e-016i)

Jay Kothari 67

Page 46 of

Problem 14 Design a second order digital bandstop Butterworth filter with a centre frequency of 1.8kHz and a bandwidth of 200Hz and a passband ripple of 3dB at a sampling rate of 8,000Hz. Determine the transfer function and difference equation of the system. Use MATLAB to plot the magnitude and phase frequency responses. MATLAB Code:clc; clear all; close all; N=2; fs=8000; nf=fs/2; ts=1/fs; fp=1902.77; fstop=1702.77; fmp=fp/nf; fms=fstop/nf; rp=3; ap=10^(-rp/20); ap_lin=(1/(ap*ap))-1; Wp=2*pi*fp; Ws=2*pi*fstop; Wc=Wp/((ap_lin)^(1/(2*N))); fc=Wc/(2*pi); fmc=fc/nf; k=0:1:N-1; sk=Wc*exp(j*(((pi*(2*k+1)/(2*N))) +(pi/2))); disp(sk); num=Wc^N; den=poly(sk); [bm,ak]=bilinear(num,den,fs); [num1,den1] = iirlp2bs(bm, ak, fmc, [fms, fmp]); tf(num1,den1) figure freqz(num1,den1);

Jay Kothari 67

Page 47 of

title('Frequency Response'); OUTPUT:Command Window:1.0e+003 * -8.4638 + 8.4638i -8.4638 - 8.4638i Transfer function:

(0.8714+2.512e-016i) s^4 - (0.5394+1.55e-016i) s^3 + (1.826+5.229e-016i) s^2 - (0.5394 +1.533e-016i) s + (0.8714+2.458e-016i)

--------------------------------------------------------s^4 - (0.5767-2.176e-018i) s^3 + (1.81-1.452e-017i) s^2 - (0.5022-3.828e-018i) s+ (0.7594-5.339e018i)

Jay Kothari 67

Page 48 of

Problem 15 Given a DSP system with a sampling rate set up to be 8,000Hz, develop a 800Hz single-tone generator using a digital IIR filter by completing the following steps o Determine the digital IIR filter transfer function o Determine the DSP equation o Plot the tone thus generated for a duration of 0.01 sec MATLAB Code:clc; close all; clear all; fs=8000; ts=1/fs; t=0:ts:0.01; x=zeros(1,length(t)); x(1)=1; y=filter([0 sin(2*pi*800/fs) ],[1 -2*cos(2*pi*800/fs) 1],x); plot(t,y);grid ylabel('y(n)'); xlabel('time (second)'); TF=tf([0 sin(2*pi*800/fs) ],[1 -2*cos(2*pi*800/fs) 1])

Jay Kothari 67

Page 49 of

OUTPUT:Command Window:Transfer function: 0.5878 ----------------s^2 - 1.618 s + 1

Jay Kothari 67

Page 50 of

Problem 16 Given x(0) = 1, x(1) = 1, x(2) = 0, x(3) = -1, use the Goertzel algorithm to compute the following DFT coefficients and their amplitude spectra o X(0) o X(1) o |X(0)|2 o |X(1)|2

MATLAB Code:clc; close all; clear all; x(1) = 1; x(2) = 2; x(3) = 3; x(4) = 4; N=4; X1=goertzel(x,1); subplot(4,1,1); stem(abs(X1)); title('Amplitude Spectra of|X(0)|') xlabel('N(Samples)') ylabel('Amplitude') X2=goertzel(x,2); subplot(4,1,2); stem(abs(X2)); xlabel('N(Samples)') ylabel('Amplitude') title('Amplitude Spectra of|X(1)|') x1=abs(X1)*abs(X1); subplot(4,1,3); stem(abs(x1)); xlabel('N(Samples)') ylabel('Amplitude')

Jay Kothari 67

Page 51 of

title('Amplitude Spectra of|X(0)|^(2)') x2=abs(X2)*abs(X2); subplot(4,1,4); stem(abs(x2)); xlabel('N(Samples)') ylabel('Amplitude') title('Amplitude Spectra of|X(1)|^(2)') disp(['X(0):',num2str(X1)]) disp(['X(1):',num2str(X2)]) disp(['|X(0)|^(2):',num2str(x1)]); disp(['|X(1)|^(2):',num2str(x2)]); OUTPUT:Command Window:X(0):10 X(1):-2+2i |X(0)|^(2):100 |X(1)|^(2):8

Jay Kothari 67

Page 52 of

Problem 17 Design a 31-tap lowpass & highpass FIR filters whose cut-off frequency is 2,500Hz using the following window functions. Assume that the sampling rate is 8kHz. o Hamming Window o Hanning Window o Blackman Window

MATLAB Code:n=31; fs=8000; nf=fs/2; wn=2500; Wn=wn/nf; %Low Pass Filter lphamm = fir1(n,Wn,hamming(n+1)); figure('Name','Lowpass Filter using Hamming Window','NumberTitle','off') freqz(lphamm,1,fs); title('Lowpass Filter using Hamming Window') lphann = fir1(n,Wn,hanning(n+1)); figure('Name','Lowpass Filter using Hanning Window','NumberTitle','off') freqz(lphann,1,fs); title('Lowpass Filter using Hanning Window') lpblac = fir1(n,Wn,blackman(n+1)); figure('Name','Lowpass Filter using Blackman Window','NumberTitle','off') freqz(lpblac,1,fs); title('') %High Pass Filter if mod(n,2)==1 n=n+1; end lhhamm = fir1(n,Wn,'high',hamming(n+1)); figure('Name','Highpass Filter using Hamming Window','NumberTitle','off') freqz(lhhamm,1,fs); title('Highpass Filter using Hamming Window')

Jay Kothari 67

Page 53 of

lhhann = fir1(n,Wn,'high',hanning(n+1)); figure('Name','Highpass Filter using Hanning Window','NumberTitle','off') freqz(lhhann,1,fs); title('Highpass Filter using Hanning Window') lhblac = fir1(n,Wn,'high',blackman(n+1)); figure('Name','Highpass Filter using Blackman Window','NumberTitle','off') freqz(lhblac,1,fs); title('Highpass Filter using Blackman Window')

OUTPUT:-

Jay Kothari 67

Page 54 of

Jay Kothari 67

Page 55 of

Jay Kothari 67

Page 56 of

Jay Kothari 67

Page 57 of

Problem 18 Design a 41-tap bandpass FIR filter with the lower and upper cot-off frequencies being 2,500Hz and 3,000Hz respectively, using the following window functions. Assume a sampling rate of 8kHz. o Hanning Window o Hamming Window o Blackman Window List the FIR filter coefficients and plot the frequency responses for each design.

MATLAB Code:clc; close all; clear all; N=41; fs=8000; nf=fs/2; wp=2500; ws=3000; wp1=wp/nf; ws1=ws/nf; wn=[wp1 ws1]; w = hamming(N+1); bphamm = fir1(41,wn,w); figure('Name','Bandpass Filter using Hamming Window','NumberTitle','off') freqz(bphamm,1,fs) title('Bandpass Filter using Hamming Window') w=hanning(N+1); bphann = fir1(41,wn,w); figure('Name','Bandpass Filter using Hanning Window','NumberTitle','off') freqz(bphann,1,fs) title('Bandpass Filter using Hanning Window') w=blackman(N+1); bpblac= fir1(41,wn,w); figure('Name','Bandpass Filter using Blackman Window','NumberTitle','off') freqz(bpblac,1,fs) title('Bandpass Filter using Blackman Window')

Jay Kothari 67

Page 58 of

OUTPUT:-_

Jay Kothari 67

Page 59 of

Jay Kothari 67

Page 60 of

Problem 19 Given the difference equation with the input-output relationship of a certain initially relaxed DSP system (all initial conditions are zero) y(n)-0.4 y(n-1)+0.29 y(n-2) = x(n) + 0.5 x(n-1) Find the impulse response h(n) and frequency response H(w) of the above filter (using MATLAB) Find the step response of the system (using MATLAB) MATLAB Code:clc; clear all; close all; num=[1 0.5]; den=[1 -0.4 0.29]; sys=tf(num,den,-1); z=tf('z',-1) impz(num,den); figure freqz(num,den); title('Frequency Response') figure step(sys) title('Step Response of System')

Jay Kothari 67

Page 61 of

OUTPUT:Command Window:Transfer function: z + 0.5 -----------------z^2 - 0.4 z + 0.29 Sampling time: unspecified

Jay Kothari 67

Page 62 of

Jay Kothari 67

Page 63 of

Problem 20 Write a MATLAB program to read speech data from a PCM formatted speech signal and for passing it through Pre-Emphasis and De-Emphasis systems. Also write the output signal from the de-Emphasis System into an output PCM formatted signal. MATLAB Code:close all; clear all fs = 8000;

% Sampling rate

%Pre-Emphasis alpha =0.9; % Degree of pre-emphasis figure(1); freqz([1 (-alpha)],1,512,fs); % Calculate and display frequency responses t=0:(1/fs):1 x1=sin(2*pi*100*t)+sin(2*pi*1000*t)+sin(2*pi*10000*t); %test signal on behalf of speech signal figure(2); y = filter([1 -alpha],1,x1); % Filtering test signal subplot(2,1,1), plot(x1,'k') ylabel('test signal') title('test signal') subplot(2,1,2),plot(y,'k');grid ylabel('Filtered samples') xlabel('Number of samples'); title('Pre-emphasized test signal') figure(3); N = length(x1); % Length of test signal Axk =(abs(fft(x1.*hamming(N)')))/ N; % Two-sided spectrum of test signal Ayk = (abs(fft(y.*hamming(N)')))/ N; % Two-sided spectrumof pre-emphasized test signal f=[0:N/2]*fs/N; Axk(2:N)=2*Axk(2:N); % Get one-sided spectrum of test signal Ayk(2:N)= 2*Ayk(2:N); % Get one-sided spectrum of filtered test signal subplot(2,1,1), plot(f,Axk(1:N/2 + 1),'k');grid ylabel('Amplitude spectrum Ak') title('Original test signal'); subplot(2,1,2),plot(f,Ayk(1:N/2 + 1),'k');grid ylabel('Amplitude spectrum Ak') xlabel('Frequency (Hz)'); title('Preemphasized test signal');

Jay Kothari 67

Page 64 of

%De-Emphasis y1=filter(1,[1 (-alpha)],y); figure(4) title('Original test signal'); subplot(2,1,2) subplot(2,1,1) plot(x1,'k') plot(y1,'k') xlabel('Frequency (Hz)'); title('De-emphasized test signal') OUTPUT:-_

Jay Kothari 67

Page 65 of

Jay Kothari 67

Page 66 of

Jay Kothari 67

Page 67 of

Potrebbero piacerti anche