Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
36 views

DSP Lab

The document contains MATLAB code to design and analyze various analog and digital filter types including: 1) Low pass, high pass, band pass, and band stop Butterworth filters both analog and digital. Code generates filter coefficients and plots magnitude and phase response. 2) Chebyshev Type 1 low pass filter design and analysis. 3) Chebyshev Type 2 high pass filter design and analysis. The code takes user input for filter parameters and plots the resulting analog and digital filter magnitude and phase responses to verify the designs.

Uploaded by

ksbalajiaut
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
36 views

DSP Lab

The document contains MATLAB code to design and analyze various analog and digital filter types including: 1) Low pass, high pass, band pass, and band stop Butterworth filters both analog and digital. Code generates filter coefficients and plots magnitude and phase response. 2) Chebyshev Type 1 low pass filter design and analysis. 3) Chebyshev Type 2 high pass filter design and analysis. The code takes user input for filter parameters and plots the resulting analog and digital filter magnitude and phase responses to verify the designs.

Uploaded by

ksbalajiaut
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 20

Program

%Auto correlation

n=input('enter the value of n');

X=input('enter the sequence of x(n)');

t=0:1:n-1;

Y=xcorr(X);

subplot(2,1,1);

stem(t,X);

xlabel('time');

ylabel('Amplitude');

title('input sequence');

subplot(2,1,2);

stem(t,Y);

xlabel('time');

ylabel('Amplitude');

title('output sequence');

%Auto correlation of sine wave

N=1024; % Number of samples

f1=1; % Frequency of the sinewave

FS=200; % Sampling Frequency

n=0:N-1; % Sample index numbers

x=sin(2*pi*f1*n/FS); % Generate the signal, x(n)

t=[1:N]*(1/FS); % Prepare a time axis

subplot(2,1,1); % Prepare the figure


plot(t,x); % Plot x(n)

title('Sinwave of frequency 1000Hz [FS=8000Hz]');

xlabel('Time, [s]');

ylabel('Amplitude');

grid;

Rxx=xcorr(x); % Estimate its autocorrelation

subplot(2,1,2); % Prepare the figure

plot(Rxx); % Plot the autocorrelation

grid;

title('Autocorrelation function of the sinewave');

xlabel('lags');

ylabel('Autocorrelation');

%cross correlation

n=input(‘enter the value of n’);

X=input(‘enter the sequence of x(n)’);

h=input(‘enter the sequence of h(n)’);

t=0:1:n-1;

Y=xcorr(X,h);

Subplot(2,1,1);

Stem(x,t);

Xlabel(‘time’);

Ylabel(‘Amplitude’);

Title(‘input sequence’);
Subplot(2,1,2);

Stem(h,t);

Xlabel(‘time’);

Ylabel(‘Amplitude’);

Title(‘impulse sequence’);

Subplot(2,1,3);

Stem(y,t);

Xlabel(‘time’);

Ylabel(‘Amplitude’);

Title(‘output sequence’);
Output
IMPLEMENTATION OF LOW PASS IIR FILTERS

PROGRAM:
clc;
close all;
clear all;
format long
rp=input('enter the passband ripple');
rs=input('enter stopband ripple');
wp=input('enter passband freq');
ws=input('enter stopband freq');
fs=input('enter sampling freq');
w1=2*wp/fs;
w2=2*ws/fs;
%Analog LPF
[n,wn]= buttord(w1,w2,rp,rs);
[b,a]=butter(n,wn,'s');
w=0:.01:pi;
[h,om]=freqs(b,a,w);
m=20*log10(abs(h));
an=angle(h);
figure(3)
plot(om/pi,m);
title('**** Analog Output Magnitude *****');
ylabel('gain in db...>');
xlabel('normalised freq..>');
figure(2)
plot(om/pi,an);
title('**** Analog Output Phase ****');
xlabel('normalised freq..>');
ylabel('phase in radians...>');
n
wn
%Digital LPF
[n,wn]= buttord(w1,w2,rp,rs);
[b,a]=butter(n,wn);
w=0:.01:pi;
[h,om]=freqz(b,a,w);
m=20*log10(abs(h));
an=angle(h);
figure(1)
plot(om/pi,m);
title('**** Digital Output Magnitude *****');
ylabel('gain in db...>');
xlabel('normalised freq..>');
figure(4)
plot(om/pi,an);
title('**** Digital Output Phase ****');
xlabel('normalised freq..>');
ylabel('phase in radians...>');
n
wn
INPUT:
rp = 0.500
rs = 100
wp = 1500
ws = 3000
fs = 10000
Output:
n = 13
wn = 0.32870936151976
Output Waveform
IMPLEMENTATION OF HIGH PASS IIR FILTERS

PROGRAM:
clc;
close all;
clear all;
format long
rp=input('enter the passband ripple');
rs=input('enter stopband ripple');
wp=input('enter passband freq');
ws=input('enter stopband freq');
fs=input('enter sampling freq');
w1=2*wp/fs;
w2=2*ws/fs;
%Analog HPF
[n,wn]= buttord(w1,w2,rp,rs);
[b,a]=butter(n,wn,'high','s');
w=0:.01:pi;
[h,om]=freqs(b,a,w);
m=20*log10(abs(h));
an=angle(h);
figure(1)
plot(om/pi,m);
title('**** Analog Output Magnitude *****');
ylabel('gain in db...>');
xlabel('normalised freq..>');
figure(2)
plot(om/pi,an);
title('**** Analog Output Phase ****');
xlabel('normalised freq..>');
ylabel('phase in radians...>');
n
wn
%Digital HPF
[n,wn]= buttord(w1,w2,rp,rs);
[b,a]=butter(n,wn,'high');
w=0:.01:pi;
[h,om]=freqz(b,a,w); m=20*log10(abs(h));

an=angle(h);
figure(3)
plot(om/pi,m);
title('**** Digital Output Magnitude *****');
ylabel('gain in db...>');
xlabel('normalised freq..>');
figure(4)
plot(om/pi,an);
title('**** Digital Output Phase ****');
xlabel('normalised freq..>');
ylabel('phase in radians...>');
n
wn
Input:
rp = 0.5000 rs = 100
wp = 1200 ws = 2400 fs = 8000
Output Waveform
n = 13
wn = 0.32870936151976
Output Waveform
IMPLEMENTATION OF BANDPASS FILTER
% Program for the design of Butterworth analog Bandpass filter
clc;
close all;
clear all;
format long
rp=input('enter the passband ripple...');
rs=input('enter the stopband ripple...');
wp=input('enter the passband freq...');
ws=input('enter the stopband freq...');
fs=input('enter the sampling freq...');
w1=2*wp/fs;
w2=2*ws/fs;
[n]=buttord(w1,w2,rp,rs);
wn=[w1 w2];
[b,a]=butter(n,wn,'bandpass,s');
w=0:.01:pi;
[h,om]=freqs(b,a,w);
m=20*log10(abs(h));
an=angle(h); subplot(2,1,1);
plot(om/pi,m);
ylabel('Gain in dB --.');
xlabel('(a) Normalised frequency --.');
subplot(2,1,2);
plot(om/pi,an);
xlabel('(b) Normalised frequency --.');
ylabel('Phase in radians --.');
OUTPUT:
enter the passband ripple... 0.36
enter the stopband ripple... 36
enter the passband freq... 1500
enter the stopband freq... 2000

enter the sampling freq... 6000


Output Waveform
Output Waveform
IMPLEMENTATION OF BANDSTOP FILTER
% Program for the design of Butterworth analog Bandstop filter
clc;
close all;
clear all;
format long
rp=input('enter the passband ripple...');
rs=input('enter the stopband ripple...');
wp=input('enter the passband freq...');
ws=input('enter the stopband freq...');
fs=input('enter the sampling freq...');
w1=2*wp/fs;
w2=2*ws/fs;
[n]=buttord(w1,w2,rp,rs,'s');
wn=[w1 w2];
[b,a]=butter(n,wn,'stop','s');
w=0:.01:pi;
[h,om]=freqs(b,a,w);
m=20*log10(abs(h));
an=angle(h);
subplot(2,1,1);
plot(om/pi,m);
ylabel('Gain in dB --.');
xlabel('(a) Normalised frequency --.');
subplot(2,1,2);plot(om/pi,an);
xlabel('(b) Normalised frequency --.');

ylabel('Phase in radians --.');


OUTPUT:
enter the passband ripple... 0.28
enter the stopband ripple... 28
enter the passband freq... 1000

enter the stopband freq... 1400


enter the sampling freq... 5000
Output Waveform
IMPLEMENTATION OF CHEBYSHEV TYPE-1 ANALOG FILTERS
% Program for the design of Chebyshev Type-1 low-pass filter
clc;
close all;
clear all;
format long
rp=input(‘enter the passband ripple...’);
rs=input(‘enter the stopband ripple...’);
wp=input(‘enter the passband freq...’);
ws=input(‘enter the stopband freq...’);
fs=input(‘enter the sampling freq...’);
w1=2*wp/fs;
w2=2*ws/fs;
[n,wn]=cheb1ord(w1,w2,rp,rs,‟s‟);
[b,a]=cheby1(n,rp,wn,‟s‟);
W=0:.01:pi;
[h,om]=freqs(b,a,w);
M=20*log10(abs(h));
An=angle(h);
subplot(2,1,1);
plot(om/pi,m);
ylabel(‘Gain in dB --.’);
xlabel(‘(a) Normalised frequency --.’);
subplot(2,1,2);
plot(om/pi,an);
xlabel(‘(b) Normalised frequency --.’);

ylabel(„Phase in radians --.‟);


OUTPUT:
enter the passband ripple... 0.23
enter the stopband ripple... 47

enter the passband freq... 1300


enter the stopband freq... 1550
enter the sampling freq... 7800

EXPECTED GRAPH:
IMPLEMENTATION OF CHEBYSHEV TYPE-2 ANALOG FILTERS
% Program for the design of Chebyshev Type-2 High pass analog filter
clc;
close all;
clear all;
format long
rp=input('enter the passband ripple...');
rs=input('enter the stopband ripple...');
wp=input('enter the passband freq...');
ws=input('enter the stopband freq...');
fs=input('enter the sampling freq...');
w1=2*wp/fs;
w2=2*ws/fs;
[n,wn]=cheb2ord(w1,w2,rp,rs,'s');
[b,a]=cheby2(n,rs,wn,'high','s');
w=0:.01:pi;
[h,om]=freqs(b,a,w);
m=20*log10(abs(h));
an=angle(h);
subplot(2,1,1);
plot(om/pi,m);
ylabel('Gain in dB --.');
xlabel('(a) Normalised frequency --.');
subplot(2,1,2);plot(om/pi,an);

xlabel('(b) Normalised frequency --.');


ylabel('Phase in radians --.');
OUTPUT:
enter the passband ripple... 0.34
enter the stopband ripple... 34
enter the passband freq... 1400
enter the stopband freq... 1600
enter the sampling freq... 10000
EXPECTED GRAPH:

You might also like