11
MATLAB DSP Programs Raja Rajasakeran Venkat Peddigari Pete Bernardin

Matlab dsp examples

Embed Size (px)

Citation preview

Page 1: Matlab dsp examples

MATLAB DSP Programs

Raja RajasakeranVenkat PeddigariPete Bernardin

Page 2: Matlab dsp examples

Bandpass Filter

close all;clear all;r1 = 0.9; r2 = 0.88;r3=0.9;theta1 = pi/5;theta2 = 3*pi/10;theta3=4*pi/10;p1 = r1*cos(theta1) + i*r1*sin(theta1);p2 = r1*cos(theta2) + i*r2*sin(theta2);p3 = r3*cos(theta3) + i*r3*sin(theta3);p2 = r2*cos(theta2) + i*r2*sin(theta2);!aroots = [p1,conj(p1),p2,conj(p2), p3, conj(p3)];aroots = [p2,conj(p2), p3, conj(p3)];a = poly(aroots);b = [1 zeros(1,18) -1];b1 = [1];[h,w] = freqz(b1,a);freqzplot(h,w, 'mag');figure;freqzplot(h,w,'squared');

2121

4.021

33.021

2

1111

)4.0cos(219.0 )3.0cos(219.0/1

cos219.0 cos219.0/1

119.0 119.0/1)(

32

3322

zzzz

zzzz

zezezezezH jjjj

Page 3: Matlab dsp examples

Kaiser Bessel Windowclear all;close all;N=61; w31 = window(@kaiser,N,1); w33 = window(@kaiser,N,3); w35 = window(@kaiser,N,5); w37 = window(@kaiser,N,7); plot(1:N,[w31, w33, w35, w37]); axis([1 N 0 1]); legend('beta=1','beta = 3', 'beta=5', 'beta=7'); figure; a=[1]; [fw31,f] = freqz(w31,a); [fw33,f] = freqz(w33,a); [fw35,f] = freqz(w35,a); [fw37,f] = freqz(w37,a); freqzplot([fw31,fw33,fw35,fw37],f, 'mag'); legend('beta=1','beta = 3', 'beta=5', 'beta=7');

Page 4: Matlab dsp examples

Time Domain Windows

clear all;close all;N=61;w = window(@blackmanharris,N); w1 = window(@hamming,N); w2 = window(@gausswin,N,2.5); w3 = window(@kaiser,N,5); w4 = window(@tukeywin,N,0.5); plot(1:N,[w1,w3,w4]); axis([1 N 0 1]); legend('Hamming','Kaiser', 'Tukey'); figure; a=[1]; [fw,f] = freqz(w,a); [fw1,f] = freqz(w1,a); [fw2,f] = freqz(w2,a); [fw3,f] = freqz(w3,a); [fw4,f] = freqz(w4,a); freqzplot([fw1,fw3,fw4],f, 'mag'); legend('Hamming','Kaiser', 'Tukey');

Page 5: Matlab dsp examples

DFT of Square Waves, 3 Duties

close all;clear all;x = ones(1,16);y = fft(x,16);my = abs(y)/16;ay = angle(y);stem(my);figure;y1 = fft (x,32)/16;my1 = abs(y1);stem(my1);y2= fft (x,128);figure;stem (abs(y2));

100% Duty 50% Duty

12.5% Duty

Page 6: Matlab dsp examples

Notch Filtersclear all;close all;a = [1 -1.2726 0.81];b = [1 -1.414 1];[H, W] = freqz(b,a);figure;freqzplot(H,W,'linear');title ('Pole-zero Notch Filter - Mag');figure;freqzplot(H,W);title ('Pole-zero Notch Filter - dB');a1 = [1];b1 = [1 -1.414 1];[H1, W] = freqz(b1,a1);figure;freqzplot(H1,W,'linear');title ('All zero Notch Filter - Mag');figure;freqzplot(H1,W);title ('All zero Notch Filter - dB');

1 2

3 4

Page 7: Matlab dsp examples

Resonatorsclear all;close all;r = 0.99;theta = pi/4;a = [1 -2*r*theta r^2];b = 1;[H, W] = freqz(b,a);figure;freqzplot(H,W,'linear');title ('Resonator r=0.99, theta = pi/4 - Mag');figure;freqzplot(H,W);title (' Resonator r=0.99, theta = pi/4- dB');r = 0.95;theta = pi/4;a = [1 -2*r*theta r^2];b = 1;[H, W] = freqz(b,a);figure;freqzplot(H,W,'linear');title ('Resonator r=0.95, theta = pi/4 - Mag');figure;freqzplot(H,W);title (' Resonator r=0.95, theta = pi/4- dB');r = 0.99;theta = pi/4;a = [1 -2*r*theta r^2];b = [1 0 -1][H, W] = freqz(b,a);figure;freqzplot(H,W,'linear');

title ('Pole-zero Resonator r=0.99, theta = pi/4 - Mag');figure;freqzplot(H,W);title ('Pole-zero Resonator r=0.99, theta = pi/4- dB');r = 0.9;theta = pi/4;a = [1 -2*r*theta r^2];b = 1;[H, W] = freqz(b,a);figure;freqzplot(H,W,'linear');title ('Resonator r=0.9, theta = pi/4 - Mag');figure;freqzplot(H,W);title (' Resonator r=0.9, theta = pi/4- dB');r = 1.0;theta = pi/4;a = [1 -2*r*theta r^2];b = 1;[H, W] = freqz(b,a);figure;freqzplot(H,W,'linear');title ('Oscillator, theta = pi/4 - Mag');figure;freqzplot(H,W);title ('Oscillator, theta = pi/4- dB');

1

Page 8: Matlab dsp examples

Resonators (continued)2 43

98

765

10

Page 9: Matlab dsp examples

Comb Filters

clear all;close all;a = [1 -1];b = [1 0 0 0 0 0 0 0 0 0 0 -1];b = b/11;[H, W] = freqz(b,a);figure;freqzplot(H,W,'linear');title ('Comb Filter M=10 - Mag');figure;freqzplot(H,W);title ('Comb Filter M=10 - dB');bz = zeros (1,54);a1 = [1 0 0 0 0 -1];b1 = [1 [bz] -1];[H, W] = freqz(b1,a1);figure;freqzplot(H,W,'linear');title ('LM Comb Filter L = 5 M=10 - Mag');figure;freqzplot(H,W);title ('LM Comb Filter L = 5 M=10 - dB');

1 2

3 4

Page 10: Matlab dsp examples

Welch Periodogram PSD close all;clear all;t = 0:.001:4.096;x = sin(2*pi*50*t) + sin(2*pi*120*t);

stdev = 2;y = x + stdev*randn(size(t));figure;plot(y(1:50))title('Noisy time domain signal')FS = 1000.; % Sampling Rate

% 1 section NFFT = 4096; Noverlap = 0figure;pwelch(y, 4096, Noverlap, NFFT, FS)

% 16 overlapping sectionsNFFT = 512; Noverlap = 256figure;pwelch(y, 512, Noverlap, NFFT, FS)

% 32 overlapping sectionsNFFT = 256; Noverlap = 128figure;pwelch(y, 256, Noverlap, NFFT, FS)

¼ Hz Res

2 Hz Res 4 Hz Res

Time

1 2

43

Page 11: Matlab dsp examples

Discrete Fourier Transform (DFT)Forward Transform:

1

0

/2)()(N

n

NnkjenxkX for k=0,1,2,…,N-1

Inverse Transform:

1

0

/2)(1)(N

k

NnkjekXN

nx for n=0,1,2,…,N-1

----------------------------------------------------------------------------------------------------------- N=8; % MATLAB “DISCRETE FOURIER TRANSFORM” PROGRAM w0 = 2*pi/N; K0 =3; w=w0*K0*(0:N-1); Data = complex(cos(w),sin(w)); % Data = ej2nKo/N for k =1:N accum=complex(0,0); for n=1:N A = w0*(n-1)*(k-1); Twiddle=complex(cos(A),-sin(A)); %Twiddle = e-j2nk/N

accum = accum+Data(n)*Twiddle; % X(k)= ej2nKo/N e-j2nk/N end % "n" is Time index MAGXk=abs(accum) % Output the Magnitude of the DFT =N @ k=K0 end % "k" is the Frequency index