DSP Lab Record
DSP Lab Record
LAB RECORD
PROGRAM 1
AIM: Generation of continuous and discrete elementary signals (Periodic and non periodic) using
mathematical expression.
Theory: A wave is a disturbance that transfers energy from one place to another without requiring any
net flow of mass. Waves can be broadly separated into pulses and periodic waves. A pulse is a single
disturbance while a periodic wave is a continually oscillating motion. There is a close connection
between simple harmonic motion and periodic waves; in most periodic waves, the particles in the
medium experience simple harmonic motion.
Waves can also be separated into transverse and longitudinal waves. In a transverse wave, the motion
of the particles of the medium is at right angles (i.e., transverse) to the direction the wave moves. In a
longitudinal wave, such as a sound wave, the particles oscillate along the direction of motion of the
wave.
Surface waves, such as water waves, are generally a combination of a transverse and a longitudinal
wave. The particles on the surface of the water travel in circular paths as a wave moves across the
surface.
Periodic waves
A periodic wave generally follows a sine wave pattern, as shown in the diagram.
PROGRAM CODE
PROGRAM 2
Unit step: A signal with magnitude one for time greater than zero. We can assume it as a dc signal which
got switched on at time equal tozero.
t=-10:1:10; n=-10:1:10;
y1=[zeros(1,10),ones(1,11)]; y7=[zeros(1,10),ones(1,11)];
subplot(4,3,1); subplot(4,3,7);
plot2d3(t,y1); xlabel('Time'); plot2d3(n,y7); xlabel('Time');
ylabel('Magnitude'); ylabel('Magnitude');
title('Continuous Unit Step Function'); title('discrete Unit Step u(n) Function');
y2=[zeros(1,16),ones(1,5)]; y8=[zeros(1,16),ones(1,5)];
subplot(4,3,2); subplot(4,3,8);
plot2d3(t,y2); xlabel('Time'); plot2d3(n,y8); xlabel('Time');
ylabel('Magnitude'); ylabel('Magnitude');
title('Continuous Unit Step u(t-6) Function'); title('discrete Unit Step u(n-6) Function');
y3=[zeros(1,4),ones(1,17)]; y9=[zeros(1,4),ones(1,17)];
subplot(4,3,3); subplot(4,3,9);
plot2d3(t,y3); xlabel('Time'); plot2d3(n,y9); xlabel('Time');
ylabel('Magnitude'); ylabel('Magnitude');
title('Continuous Unit Step u(t+6) Function'); title('discrete Unit Step u(n+6) Function');
y4=[zeros(1,6),ones(1,15)]; y10=[zeros(1,6),ones(1,15)];
subplot(4,3,4); subplot(4,3,10);
plot2d3(t,y4); xlabel('Time'); plot2d3(n,y10); xlabel('Time');
ylabel('Magnitude'); ylabel('Magnitude');
title('Continuous Unit Step u(-t+4) Function'); title('discrete Unit Step u(-n+4) Function');
AIM: Adding and subtracting two given signals (continuous as well as discrete signals).
Figure 3.1 Continuous and Discrete Signals with addition and subtraction
PROGRAM 4
Theory: A convolution is an integral that expresses the amount of overlap of one function as it is
shifted over another function.It therefore "blends" one function with another. For example, in
synthesis imaging, the measured dirty map is a convolution of the "true" CLEAN map with the
dirty beam (the FOURIER TRANSFORM of the sampling distribution). The convolution is
sometimes also known by its German name, faltung ("folding").
Abstractly, a convolution is defined as a product of functions and that are objects in the algebra
of SCHWARTZ FUNCTIONS in. Convolution of two functions and over a finite range is given
by
Figure 4(a):
h(n) is;
3 4 5
y(n) is:
-6 -20 -11 18 49 30 38 24
Figure 4(b):
Figure 4(c):
Input:
enter the first seq:=[0 1 2 3]
enter the second seq:=[2 3 4]
Output
y(n)= [0 2 7 16 17 12]
PROGRAM 5
AIM: Checking Linearity and Time variance property of a system using convolution, shifting.
Discrete Convolution y(n)=x(n) h(n) = By using convolution we can find zero state response of
the system.
PROGRAM CODE
clc; n2=0:M-1; subplot(312);
//Linearity and Time variance stem(n2,x2); grid on;
x1=input('Enter the first sequence x1(n) = '); xlabel('n2--->');
x2=input('Enter the second sequence x2(n) = '); ylabel('amplitude--->');
L=length(x1);
M=length(x2);
N=L+M-1; yn=conv(x1,x2); disp(‘The title('Second sequence');
values of yn are= ‘); disp(yn); n3=0:N-1; subplot(313);
stem(n3,yn);
grid on; xlabel('n3--->'); ylabel('amplitude---
n1=0:L-1; >');
subplot(311); title('Convolved output');
stem(n1,x1); grid on;
xlabel('n1--->'); ylabel('amplitude---
>'); title('First sequence');
n2=0:M-1;
Enter the first sequence x1(n) = [1 2 3 4 5]
Enter the second sequence x2(n) = [5 8 3 5 4 6]
Figure 5.1 Continuous and Discrete Signals with addition and subtraction
PROGRAM 6
AIM: To generate and verify random sequences with arbitrary distributions, means and variances
for: (a) Rayleigh distribution
(b) Normal distributions: N(0,1)
(c) Poisson distributions: N(m, x) Software requirement: - SCI LAB
Theory:
If the component velocities of a particle in the x and y directions are two independent normal
random variables with zero means and equal variances, then the distance the particle travels per
unit time is distributed Rayleigh.
(1)
on the domain . While statisticians and mathematicians uniformly use the term
"normal distribution" for this distribution, physicists sometimes call it a Gaussian distribution
and, because of its curved flaring shape, social scientists refer to it as the "bell curve."
A Poisson random variable is the number of successes that result from a Poisson experiment. The
probability distribution of a Poisson random variable is called a Poisson distribution.
Given the mean number of successes (μ) that occur in a specified region, we can compute the
Poisson probability based on the following formula:
Poisson Formula. Suppose we conduct a Poisson experiment, in which the average number of successes
within a given region is μ. Then, the Poisson probability is:
Where x is the actual number of successes that result from the experiment and e is approximately equal
to
2.71828.
PROGRAM CODE
//normal distribution x = //rayleigh //poission
-5:0.01:5; y1 = distribution x = - distribution x = -
(normpdf(x,0,1)); y2 = 5:1:15; y1 = 5:1:15; y1 =
(normpdf(x,0.1,2)); y3 (poisspdf(x,4)); y2 = (raylpdf(x,4)); y2 =
= (normpdf(x,0,0.5)); (poisspdf(x,2)); y3 = (raylpdf(x,2)); y3 =
subplot(3,1,1); (poisspdf(x,1)); (raylpdf(x,1));
plot2d3(x,y1,'.',x,y2,'-',x,y3,'*') subplot(3,1,2); subplot(3,1,3);
; plot2d3(x,y1,'.',x,y2,'-',x,y3,'*' plot2d3(x,y1,'.',x,y2,'-',x,y3,'*')
xlabel('value of x'); ) ;
ylabel('value of y'); ; xlabel('value of x');
title('normal distribution'); xlabel('value of x'); ylabel('value of y');
ylabel('value of y'); title('poission distribution');
title('rayleigh distribution');
PROGRAM 7
PROGRAM CODE
//pdf
xn=input('Enter the sequence x(n)'); % Find the phases of individual DFT points %
ln=length(xn); xk=zeros(1,ln); plot the magnitude sequence
xk=zeros(1,ln); t=0:ln-1;
subplot(223);
%DFT of sequence stem(t,phase); ylabel
('Phase'); xlabel
for k=0:ln-1 for ('K');
n=0:ln-1 title ('Phase Response');
xk(k+1)=xk(k+1)+
(xn(n+1)*exp((i)*2*pi*k*n/ ln)); end end %IDFT of the sequence
%Plotting input sequence for n=0:ln-1
for k=0:ln-1
t=0:ln-1; ixk(n+1)=ixk(n+1)+(xk(k+1)*exp(i*2*pi*k*n/
ln));
end end
Output:
Xn=[1 2 3 4 5]
DFT of a sequence
For FFT
PROGRAM CODE
close all; xlabel('n---->');
x=input('Enter the sequence : ') ylabel('magnitude');
N=length(x) title('magnitude response');
xK=fft(x,N) subplot (2,2,3);
xn=ifft(xK) stem(n,angle(xK));
n=0:N-1; xlabel('n---->'); ylabel('phase');
subplot (2,2,1);
stem(n,x); xlabel('n---->'); title('Phase responce');
ylabel('amplitude'); subplot (2,2,4); stem(n,xn);
title('input sequence'); xlabel('n---->');
subplot (2,2,2); ylabel('amplitude');
stem(n,abs(xK));
xlabel('n---->');
ylabel('magnitude');
title('magnitude
response'); subplot
(2,2,3);
stem(n,angle(xK));
xlabel('n---->');
ylabel('phase');
OUTPUT
x=12345N=5
xn = 1 2 3 4 5
PROGRAM 9
PROGRAM CODE
Clc;
xl = input ('Enter the First Sequence to xlabel('Time');
be convoluted:'); 11 = length(x1); ylabel('Amplitude');
x2 = input ('Enter the Second Sequence to be title('First Sequence');
convoluted:'); 12 = length(x2); 13 = 11 + 12 subplot(312); stem(x2);
-1; xl =[x1 ,zeros( 1,13-11)]; x2= xlabel('Time');
[x2,zeros(1,13-l2)]; disp('The Input ylabel('Amplitude');
Squence:'); x1,x2 f = cconv(x1,x2,13); title('First Sequence');
disp('The Circular Convoluted Sequence subplot(313); stem(f);
is:'); disp(f); subplot(311); xlabel('Time');
stem(x1); ylabel('Amplitude');
title('Circular Convoluted sequence');
OUTPUT
xl = 1 2 0 0
x2 = 1 2 4 0
PROGRAM 10
PROGRAM CODE
Clc;
%Compute the Z-transform of sin(n)
syms n
f = sin(n);
ztrans(f)
PROGRAM 11
Theory:
1. Buttord
Description calculates the minimum order of a digital or analog Butterworth filter required to
meet a set of filter design
Parameters Description
2. Butter
Syntax
[b,a] = butter(n,Wn)
[b,a] = butter(n,Wn,'ftype’)
[b,a] = butter(n,Wn,'s’)
Description : Designs lowpass, bandpass, highpass, and bandstop digital and analog
Butterworth filters. Butterworth filters are characterized by a magnitude response that is
maximally flat in the passband and monotonic overall.
PROGRAM CODE
clc; clear
all; close clc; clear all; close all;
all; format format long;
long; % Program fopr Butterworth HPF
% Program for Butterwoth LPF wp=input('Please enter the first pass band
wp=input('Please enter the first pass band frequency (Hz): ');
frequency (Hz): '); ws=input('Please enter the first stop band
ws=input('Please enter the first stop band frequency (Hz): '); rp=input('Please enter the
frequency (Hz): '); pass band ripple: '); rs=input('Please enter the
rp=input('Please enter the pass band ripple: '); stop band ripple: '); fs=input('Please enter the
rs=input('Please enter the stop band ripple: '); sampling frequency:
fs=input('Please enter the sampling frequency: (Hz)');
(Hz)'); w1=2*wp/fs; w1=2*wp/fs; w2=2*ws/fs;
w2=2*ws/fs; [n,wn]=buttord(w1,w2,rp,rs);
[n,wn]=buttord(w1,w2,rp,rs); [b,a]=butter(n,wn,'high'); w=0:0.01:pi;
[b,a]=butter(n,wn) w=0:0.01:pi; [h,om]=freqz(b,a,w);
[h,om]=freqz(b,a,w); m=20*log10(abs(h)); m=20*log10(abs(h));
an=angle(h); an=angle(h);
subplot(2,1,1); plot(om/pi,m); subplot(2,1,1); plot(om/pi,m);
ylim([-300 50]); ylabel('gain ylim([-300 50]); ylabel('gain
in dB'); xlabel('Normalised in dB');
frequency'); xlabel('Normalised frequency');
subplot(2,1,2);plot(om/pi,an); subplot(2,1,2);plot(om/pi,an); ylabel('Phase in
ylabel('Phase in Radian'); Radian’); xlabel('Normalised frequency');
xlabel('Normalised frequency');
PROGRAM 12
Theory:
FIR filters are digital filters with finite impulse response. They are also known as non-recursive
digital filters as they do not have the feedback. An FIR filter has two important advantages over
an IIR design:
Firstly, there is no feedback loop in the structure of an FIR filter. Due to not having a feedback
loop, an FIR filter is inherently stable. Meanwhile, for an IIR filter, we need to check the
stability. Secondly, an FIR filter can provide a linear-phase response. As a matter of fact, a linear-
phase response is the main advantage of an FIR filter over an IIR design otherwise, for the same
filtering specifications; an IIR filter will lead to a lower order.
FIR FILTER DESIGN An FIR filter is designed by finding the coefficients and filter order that meet
certain specifications, which can be in the time-domain (e.g. a matched filter) and/or the frequency
domain (most common). Matched filters perform a cross-correlation between the input signal and a
known pulse-shape. The FIR convolution is a cross-correlation between the input signal and a time-
reversed copy of the impulse-response. Therefore, the matched-filter's impulse response is
"designed" by sampling the known pulse-shape and using those samples in reverse order as the
coefficients of the filter. When a particular frequency response is desired, several different design
methods are common:
clc; clear
all; close %Band Pass filter wn=[wp
all; ws]; b=fir1(n,wn, ‘band',
% Program code for FIR Butterworth filter y); [h,o]=freqz(b,1,256);
using Rectangular window m=20*log10(abs(h));
fp=input('Please enter the pass band frequency subplot(2,2,3); plot(o/pi,m);
(Hz): '); ylim([-120 20]);
fs=input('Please enter the stop band frequency ylabel('Gain in dB');
(Hz): '); xlabel('Normalised frequency');
rp=input('Please enter the pass band ripple: '); title('Band pass filter');
rs=input('Please enter the stop band ripple: ');
sf=input('Please enter the sampling frequency: % Band stop filter
(Hz)'); wp=2*fp/sf; b=fir1(n,wn,'stop',y);
ws=2*fs/sf; [h,o]=freqz(b,1,256);
num=-20*log10(sqrt(rp*rs))-13; m=20*log10(abs(h));
dem=14.6*(fs-fp)/sf; subplot(2,2,4); plot(o/pi,m);
n=ceil(num/dem); n1=n+1; ylim([-15 5]); ylabel('Gain
if(rem(n,2)~=0) n1=n; n=n-1; in dB');
end xlabel('Normalised frequency');
y=rectwin(n1) title('Stop pass filter');
ylim([-100 20]);
ylabel('Gain in dB');
xlabel('Normalised frequency');
title('High pass filter');
PROGRAM CODE
clc; clear
all; close %Band Pass filter
all; wn=[wp ws];
fp=input('Please enter thepass band frequency b=fir1(n,wn, ‘band', y);