Sie sind auf Seite 1von 11

MATLAB DSP Programs

Raja Rajasakeran
Venkat Peddigari
Pete Bernardin
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');
( )( ) ( )( ) | |
( ) ( )
( ) ( ) | |
2 1 2 1
4 . 0
2 1
3
3 . 0
2 1
2
1 1 1 1
) 4 . 0 cos( 2 1 9 . 0 ) 3 . 0 cos( 2 1 9 . 0 / 1
cos 2 1 9 . 0 cos 2 1 9 . 0 / 1
1 1 9 . 0 1 1 9 . 0 / 1 ) (
3 2
3 3 2 2

=

=

+ +
+ + =
(

+ + =
=
z z z z
z z z z
z e z e z e z e z H
j j j j
t t
e e
t e t e
e e e e
Kaiser Bessel Window
clear 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');
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');
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
Notch Filters
clear 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
Resonators
clear 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
Resonators (continued)
2 4
3
9
8
7
6
5
10
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
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 = 0
figure;
pwelch(y, 4096, Noverlap, NFFT, FS)

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

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

Hz Res
2 Hz Res 4 Hz Res
Time
1 2
4 3
Discrete Fourier Transform (DFT)
Forward Transform:
=

=

1
0
/ 2
) ( ) (
N
n
N nk j
e n x k X
t
for k=0,1,2,,N-1

Inverse Transform:
=

=
1
0
/ 2
) (
1
) (
N
k
N nk j
e k X
N
n x
t
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 = e
j2tnKo/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
-j2tnk/N

accum = accum+Data(n)*Twiddle; % X(k)= Ee
j2tnKo/N
e
-j2tnk/N

end % "n" is Time index
MAGXk=abs(accum) % Output the Magnitude of the DFT =N @ k=K0
end % "k" is the Frequency index