The document provides MATLAB programs for signal processing tasks including representation of basic signals, linear and circular convolution, overlap save and overlap add methods for convolution, and crosscorrelation and autocorrelation. It includes MATLAB code to generate unit impulse, step, ramp, exponential, sine and cosine signals. Code is also provided to compute linear convolution, circular convolution with and without zero padding, and implement overlap save and overlap add methods for convolution of sequences. Crosscorrelation and autocorrelation code is given as well.
Continuous and Discrete Elementary signals,continuous and discrete unit step signals,Exponential and Ramp signals,continuous and discrete convolution time signal,Adding and subtracting two given signals,uniform random numbers between (0, 1).,random binary wave,random binary wave,robability density functions. Find mean and variance for the above
distributions
Digital signal Processing all matlab code with Lab report Alamgir Hossain
Digital signal processing(DSP) laboratory with matlab software....
Problem List :
1.To write a Matlab program to evaluate the impulse response of the system.
2.Computation of N point DFT of a given sequence and to plot magnitude and phase spectrum.
3.To Generate continuous time sinusoidal signal, discrete time cosine signal.
4.To find the DFT / IDFT of given signal.
5.Program for generation of Sine sequence.
6.Program for generation of Cosine sequence.
7. Program for the generation of UNIT impulse signal
8. Program for the generation of Exponential signal.
Continuous and Discrete Elementary signals,continuous and discrete unit step signals,Exponential and Ramp signals,continuous and discrete convolution time signal,Adding and subtracting two given signals,uniform random numbers between (0, 1).,random binary wave,random binary wave,robability density functions. Find mean and variance for the above
distributions
Digital signal Processing all matlab code with Lab report Alamgir Hossain
Digital signal processing(DSP) laboratory with matlab software....
Problem List :
1.To write a Matlab program to evaluate the impulse response of the system.
2.Computation of N point DFT of a given sequence and to plot magnitude and phase spectrum.
3.To Generate continuous time sinusoidal signal, discrete time cosine signal.
4.To find the DFT / IDFT of given signal.
5.Program for generation of Sine sequence.
6.Program for generation of Cosine sequence.
7. Program for the generation of UNIT impulse signal
8. Program for the generation of Exponential signal.
Applied Digital Signal Processing 1st Edition Manolakis Solutions Manualtowojixi
Full download http://alibabadownload.com/product/applied-digital-signal-processing-1st-edition-manolakis-solutions-manual/
Applied Digital Signal Processing 1st Edition Manolakis Solutions Manual
MATLAB Programs For Beginners. | Abhi SharmaAbee Sharma
This is MATLAB's 10 most easy & most basic programs that I's supposed to submit in my practicals. In this document I've complied 10 MATLAB programs from basic to advanced through intermediate levels, But overall they are for beginners only. It's only a 26 pages doc. for academic purposes. well, What else a student can offer you, huh? LOLz
Applied Digital Signal Processing 1st Edition Manolakis Solutions Manualtowojixi
Full download http://alibabadownload.com/product/applied-digital-signal-processing-1st-edition-manolakis-solutions-manual/
Applied Digital Signal Processing 1st Edition Manolakis Solutions Manual
MATLAB Programs For Beginners. | Abhi SharmaAbee Sharma
This is MATLAB's 10 most easy & most basic programs that I's supposed to submit in my practicals. In this document I've complied 10 MATLAB programs from basic to advanced through intermediate levels, But overall they are for beginners only. It's only a 26 pages doc. for academic purposes. well, What else a student can offer you, huh? LOLz
Gauss Elimination Method With Partial PivotingSM. Aurnob
Gauss Elimination Method with Partial Pivoting:
Goal and purposes:
Gauss Elimination involves combining equations to eliminate unknowns. Although it is one of the earliest methods for solving simultaneous equations, it remains among the most important algorithms in use now a days and is the basis for linear equation solving on many popular software packages.
Description:
In the method of Gauss Elimination the fundamental idea is to add multiples of one equation to the others in order to eliminate a variable and to continue this process until only one variable is left. Once this final variable is determined, its value is substituted back into the other equations in order to evaluate the remaining unknowns. This method, characterized by step‐by‐step elimination of the variables.
Gauss Seidel Method:
Goal and purposes:
The main goal and purpose of the program is to solve a system of n linear simultaneous equation using Gauss Seidel method.
This Slides includes:
Goal and purpose, Description, Algorithm, C-code, Screenshot etc.
Digital Signal Processing using Open Source Scilab. It covers more than 20 experiments. This slide is in PDF format. It gives idea for those who wants to scilab for signal processing applications
Incorporate the SOR method in the multigridTest-m and apply the multig.pdfaartechindia
Incorporate the SOR method in the multigridTest.m and apply the multigridTest.m, to
determine the effects of changes in
Pre-smoothing iterations
Post-smoothing iterations
Multigrid cycle type
Iterative method
Number of grids (or grid hierarchy)
% SOR (Successive Over-Relaxation)
n = input('Enter number of equations, n: ');
A = zeros(n,n+1);
x1 = zeros(1,n);
A=[5 -2 3 -1;-3 9 1 2;2 -1 -7 3];
x1 = [0 0 0];
tol = input('Enter tolerance, tol: ');
m = input('Enter maximum number of iterations, m: ');
w = input('Enter the parameter w (omega): ');
k = 1;
while k <= m
err = 0;
for i = 1 : n
s = 0;
for j = 1 : n
s = s-A(i,j)*x1(j);
end
s = w*(s+A(i,n+1))/A(i,i);
if abs(s) > err
err = abs(s);
end
x1(i) = x1(i)+s;
end
if err <= tol
break;
else
k = k+1;
end
end
fprintf('The solution vector after %d iterations is :\n', k);
for i = 1 : n
fprintf(' %11.8f \n', x1(i));
end
%% Multigrid test case with visulization
% Author: Ben Beaudry
clc; clear; close all
load A_b.mat;
A = full(A); % Unsparce matrix to show full power of Multigrid
pre = 2; % Number of presmoothing iterations
post = 2; % Number of postsmoothing iterations
% cycle = 1; % Type of multigrid cycle (1=V-cycle, 2=W-cycle, 3=F-cycle)
smooth = 1; % Smoother type (1=Jacobi, 2=Gauss-Seidel)
grids = 5; % Max grids in cycle
maxit = 10; % Max iterations of solver
tol = 1e-02; % Tolerance of solver
%% Solvers
% solve directly
t=cputime;
x_D = A\b;
fprintf('Direct Solve Time: %g Seconds\n',cputime-t)
% V-Cycle
t=cputime;
[x_V,res_V,it_V] = multigrid(A,b,pre,post,1,smooth,grids,maxit,tol);
fprintf('V-Cycle Solve Time: %g Seconds\n',cputime-t)
% W-Cycle
t=cputime;
[x_W,res_W,it_W] = multigrid(A,b,pre,post,2,smooth,grids,maxit,tol);
fprintf('W-Cycle Solve Time: %g Seconds\n',cputime-t)
% F-Cycle
t=cputime;
[x_F,res_F,it_F] = multigrid(A,b,pre,post,3,smooth,grids,maxit,tol);
fprintf('F-Cycle Solve Time: %g Seconds\n',cputime-t)
% max it for iterative methods
it = 100;
% Gauss-Siedel
t=cputime;
L = tril(A);
U = triu(A,1);
x_G = zeros(length(b),1);
res_G= zeros(it,1);
for g = 1:it
x_G = L\(b-U*x_G);
r = b - A * x_G;
res_G(g) = norm(r);
if res_G(g) < tol
break;
end
end
fprintf('Gauss-Seidel Solve Time: %g Seconds\n',cputime-t)
% Jacobi
t=cputime;
d = diag(A);
dinv = 1./d;
LU = tril(A,-1)+triu(A,1);
U = triu(A,1);
x_J = zeros(length(b),1);
res_J= zeros(it,1);
for j = 1:it
x_J = dinv.*(b-(LU*x_J));
r = b - A * x_J;
res_J(j) = norm(r);
if res_J(j) < tol
break;
end
end
fprintf('Jacobi Solve Time: %g Seconds\n',cputime-t)
%% Plotting
figure;
hold on
plot(1:g,res_G(1:g),'o-','DisplayName','Guass-Seidel')
plot(1:j,res_J(1:j),'o-','DisplayName','Jacobi')
plot(1:it_V,res_V(1:it_V),'o-','DisplayName','V-Cycle Multigrid')
plot(1:it_F,res_F(1:it_F),'o-','DisplayName','F-Cycle Multigrid')
plot(1:it_W,res_W(1:it_W),'o-','DisplayName','W-Cycle Multigrid')
set(gca,'XLim',[0 100]);
grid on
legend('location','best')
ylabel('Relative Convergance')
xlabel('Iterations')
title('Convergance of Numerical System')
hold off
MULTIGRID FUNC.
My talk in the MCQMC Conference 2016, Stanford University. The talk is about Multilevel Hybrid Split Step Implicit Tau-Leap
for Stochastic Reaction Networks.
Democratizing Fuzzing at Scale by Abhishek Aryaabh.arya
Presented at NUS: Fuzzing and Software Security Summer School 2024
This keynote talks about the democratization of fuzzing at scale, highlighting the collaboration between open source communities, academia, and industry to advance the field of fuzzing. It delves into the history of fuzzing, the development of scalable fuzzing platforms, and the empowerment of community-driven research. The talk will further discuss recent advancements leveraging AI/ML and offer insights into the future evolution of the fuzzing landscape.
Courier management system project report.pdfKamal Acharya
It is now-a-days very important for the people to send or receive articles like imported furniture, electronic items, gifts, business goods and the like. People depend vastly on different transport systems which mostly use the manual way of receiving and delivering the articles. There is no way to track the articles till they are received and there is no way to let the customer know what happened in transit, once he booked some articles. In such a situation, we need a system which completely computerizes the cargo activities including time to time tracking of the articles sent. This need is fulfilled by Courier Management System software which is online software for the cargo management people that enables them to receive the goods from a source and send them to a required destination and track their status from time to time.
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...Dr.Costas Sachpazis
Terzaghi's soil bearing capacity theory, developed by Karl Terzaghi, is a fundamental principle in geotechnical engineering used to determine the bearing capacity of shallow foundations. This theory provides a method to calculate the ultimate bearing capacity of soil, which is the maximum load per unit area that the soil can support without undergoing shear failure. The Calculation HTML Code included.
Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)MdTanvirMahtab2
This presentation is about the working procedure of Shahjalal Fertilizer Company Limited (SFCL). A Govt. owned Company of Bangladesh Chemical Industries Corporation under Ministry of Industries.
Automobile Management System Project Report.pdfKamal Acharya
The proposed project is developed to manage the automobile in the automobile dealer company. The main module in this project is login, automobile management, customer management, sales, complaints and reports. The first module is the login. The automobile showroom owner should login to the project for usage. The username and password are verified and if it is correct, next form opens. If the username and password are not correct, it shows the error message.
When a customer search for a automobile, if the automobile is available, they will be taken to a page that shows the details of the automobile including automobile name, automobile ID, quantity, price etc. “Automobile Management System” is useful for maintaining automobiles, customers effectively and hence helps for establishing good relation between customer and automobile organization. It contains various customized modules for effectively maintaining automobiles and stock information accurately and safely.
When the automobile is sold to the customer, stock will be reduced automatically. When a new purchase is made, stock will be increased automatically. While selecting automobiles for sale, the proposed software will automatically check for total number of available stock of that particular item, if the total stock of that particular item is less than 5, software will notify the user to purchase the particular item.
Also when the user tries to sale items which are not in stock, the system will prompt the user that the stock is not enough. Customers of this system can search for a automobile; can purchase a automobile easily by selecting fast. On the other hand the stock of automobiles can be maintained perfectly by the automobile shop manager overcoming the drawbacks of existing system.
Cosmetic shop management system project report.pdfKamal Acharya
Buying new cosmetic products is difficult. It can even be scary for those who have sensitive skin and are prone to skin trouble. The information needed to alleviate this problem is on the back of each product, but it's thought to interpret those ingredient lists unless you have a background in chemistry.
Instead of buying and hoping for the best, we can use data science to help us predict which products may be good fits for us. It includes various function programs to do the above mentioned tasks.
Data file handling has been effectively used in the program.
The automated cosmetic shop management system should deal with the automation of general workflow and administration process of the shop. The main processes of the system focus on customer's request where the system is able to search the most appropriate products and deliver it to the customers. It should help the employees to quickly identify the list of cosmetic product that have reached the minimum quantity and also keep a track of expired date for each cosmetic product. It should help the employees to find the rack number in which the product is placed.It is also Faster and more efficient way.
Explore the innovative world of trenchless pipe repair with our comprehensive guide, "The Benefits and Techniques of Trenchless Pipe Repair." This document delves into the modern methods of repairing underground pipes without the need for extensive excavation, highlighting the numerous advantages and the latest techniques used in the industry.
Learn about the cost savings, reduced environmental impact, and minimal disruption associated with trenchless technology. Discover detailed explanations of popular techniques such as pipe bursting, cured-in-place pipe (CIPP) lining, and directional drilling. Understand how these methods can be applied to various types of infrastructure, from residential plumbing to large-scale municipal systems.
Ideal for homeowners, contractors, engineers, and anyone interested in modern plumbing solutions, this guide provides valuable insights into why trenchless pipe repair is becoming the preferred choice for pipe rehabilitation. Stay informed about the latest advancements and best practices in the field.
About
Indigenized remote control interface card suitable for MAFI system CCR equipment. Compatible for IDM8000 CCR. Backplane mounted serial and TCP/Ethernet communication module for CCR remote access. IDM 8000 CCR remote control on serial and TCP protocol.
• Remote control: Parallel or serial interface.
• Compatible with MAFI CCR system.
• Compatible with IDM8000 CCR.
• Compatible with Backplane mount serial communication.
• Compatible with commercial and Defence aviation CCR system.
• Remote control system for accessing CCR and allied system over serial or TCP.
• Indigenized local Support/presence in India.
• Easy in configuration using DIP switches.
Technical Specifications
Indigenized remote control interface card suitable for MAFI system CCR equipment. Compatible for IDM8000 CCR. Backplane mounted serial and TCP/Ethernet communication module for CCR remote access. IDM 8000 CCR remote control on serial and TCP protocol.
Key Features
Indigenized remote control interface card suitable for MAFI system CCR equipment. Compatible for IDM8000 CCR. Backplane mounted serial and TCP/Ethernet communication module for CCR remote access. IDM 8000 CCR remote control on serial and TCP protocol.
• Remote control: Parallel or serial interface
• Compatible with MAFI CCR system
• Copatiable with IDM8000 CCR
• Compatible with Backplane mount serial communication.
• Compatible with commercial and Defence aviation CCR system.
• Remote control system for accessing CCR and allied system over serial or TCP.
• Indigenized local Support/presence in India.
Application
• Remote control: Parallel or serial interface.
• Compatible with MAFI CCR system.
• Compatible with IDM8000 CCR.
• Compatible with Backplane mount serial communication.
• Compatible with commercial and Defence aviation CCR system.
• Remote control system for accessing CCR and allied system over serial or TCP.
• Indigenized local Support/presence in India.
• Easy in configuration using DIP switches.
COLLEGE BUS MANAGEMENT SYSTEM PROJECT REPORT.pdfKamal Acharya
The College Bus Management system is completely developed by Visual Basic .NET Version. The application is connect with most secured database language MS SQL Server. The application is develop by using best combination of front-end and back-end languages. The application is totally design like flat user interface. This flat user interface is more attractive user interface in 2017. The application is gives more important to the system functionality. The application is to manage the student’s details, driver’s details, bus details, bus route details, bus fees details and more. The application has only one unit for admin. The admin can manage the entire application. The admin can login into the application by using username and password of the admin. The application is develop for big and small colleges. It is more user friendly for non-computer person. Even they can easily learn how to manage the application within hours. The application is more secure by the admin. The system will give an effective output for the VB.Net and SQL Server given as input to the system. The compiled java program given as input to the system, after scanning the program will generate different reports. The application generates the report for users. The admin can view and download the report of the data. The application deliver the excel format reports. Because, excel formatted reports is very easy to understand the income and expense of the college bus. This application is mainly develop for windows operating system users. In 2017, 73% of people enterprises are using windows operating system. So the application will easily install for all the windows operating system users. The application-developed size is very low. The application consumes very low space in disk. Therefore, the user can allocate very minimum local disk space for this application.
Immunizing Image Classifiers Against Localized Adversary Attacksgerogepatton
This paper addresses the vulnerability of deep learning models, particularly convolutional neural networks
(CNN)s, to adversarial attacks and presents a proactive training technique designed to counter them. We
introduce a novel volumization algorithm, which transforms 2D images into 3D volumetric representations.
When combined with 3D convolution and deep curriculum learning optimization (CLO), itsignificantly improves
the immunity of models against localized universal attacks by up to 40%. We evaluate our proposed approach
using contemporary CNN architectures and the modified Canadian Institute for Advanced Research (CIFAR-10
and CIFAR-100) and ImageNet Large Scale Visual Recognition Challenge (ILSVRC12) datasets, showcasing
accuracy improvements over previous techniques. The results indicate that the combination of the volumetric
input and curriculum learning holds significant promise for mitigating adversarial attacks without necessitating
adversary training.
Welcome to WIPAC Monthly the magazine brought to you by the LinkedIn Group Water Industry Process Automation & Control.
In this month's edition, along with this month's industry news to celebrate the 13 years since the group was created we have articles including
A case study of the used of Advanced Process Control at the Wastewater Treatment works at Lleida in Spain
A look back on an article on smart wastewater networks in order to see how the industry has measured up in the interim around the adoption of Digital Transformation in the Water Industry.
Overview of the fundamental roles in Hydropower generation and the components involved in wider Electrical Engineering.
This paper presents the design and construction of hydroelectric dams from the hydrologist’s survey of the valley before construction, all aspects and involved disciplines, fluid dynamics, structural engineering, generation and mains frequency regulation to the very transmission of power through the network in the United Kingdom.
Author: Robbie Edward Sayers
Collaborators and co editors: Charlie Sims and Connor Healey.
(C) 2024 Robbie E. Sayers
1. MATLAB Programs
Chapter 16
16.1 INTRODUCTION
MATLAB stands for MATrix LABoratory. It is a technical computing environment
for high performance numeric computation and visualisation. It integrates numerical
analysis, matrix computation, signal processing and graphics in an easy-to-use
environment, where problems and solutions are expressed just as they are written
mathematically, without traditional programming. MATLAB allows us to express
the entire algorithm in a few dozen lines, to compute the solution with great accuracy
in a few minutes on a computer, and to readily manipulate a three-dimensional
display of the result in colour.
MATLAB is an interactive system whose basic data element is a matrix that
does not require dimensioning. It enables us to solve many numerical problems in a
fraction of the time that it would take to write a program and execute in a language
such as FORTRAN, BASIC, or C. It also features a family of application specific
solutions, called toolboxes. Areas in which toolboxes are available include signal
processing, image processing, control systems design, dynamic systems simulation,
systems identification, neural networks, wavelength communication and others.
It can handle linear, non-linear, continuous-time, discrete-time, multivariable and
multirate systems. This chapter gives simple programs to solve specific problems
that are included in the previous chapters. All these MATLAB programs have been
tested under version 7.1 of MATLAB and version 6.12 of the signal processing
toolbox.
16.2 REPRESENTATION OF BASIC SIGNALS
MATLAB programs for the generation of unit impulse, unit step, ramp, exponential,
sinusoidal and cosine sequences are as follows.
% Program for the generation of unit impulse signal
clc;clear all;close all;
t522:1:2;
y5[zeros(1,2),ones(1,1),zeros(1,2)];subplot(2,2,1);stem(t,y);
2. 816 Digital Signal Processing
ylabel(‘Amplitude --.’);
xlabel(‘(a) n --.’);
% Program for the generation of unit step sequence [u(n)2 u(n 2 N]
n5input(‘enter the N value’);
t50:1:n21;
y15ones(1,n);subplot(2,2,2);
stem(t,y1);ylabel(‘Amplitude --.’);
xlabel(‘(b) n --.’);
% Program for the generation of ramp sequence
n15input(‘enter the length of ramp sequence’);
t50:n1;
subplot(2,2,3);stem(t,t);ylabel(‘Amplitude --.’);
xlabel(‘(c) n --.’);
% Program for the generation of exponential sequence
n25input(‘enter the length of exponential sequence’);
t50:n2;
a5input(‘Enter the ‘a’ value’);
y25exp(a*t);subplot(2,2,4);
stem(t,y2);ylabel(‘Amplitude --.’);
xlabel(‘(d) n --.’);
% Program for the generation of sine sequence
t50:.01:pi;
y5sin(2*pi*t);figure(2);
subplot(2,1,1);plot(t,y);ylabel(‘Amplitude --.’);
xlabel(‘(a) n --.’);
% Program for the generation of cosine sequence
t50:.01:pi;
y5cos(2*pi*t);
subplot(2,1,2);plot(t,y);ylabel(‘Amplitude --.’);
xlabel(‘(b) n --.’);
As an example,
enter the N value 7
enter the length of ramp sequence 7
enter the length of exponential sequence 7
enter the a value 1
Using the above MATLAB programs, we can obtain the waveforms of the unit
impulse signal, unit step signal, ramp signal, exponential signal, sine wave signal and
cosine wave signal as shown in Fig. 16.1.
3. MATLAB Programs 817
Fig. 16.1 Representation of Basic Signals (a) Unit Impulse Signal (b) Unit-step
Signal (c) Ramp Signal (d) Exponential Signal (e) Sinewave Signal ( f )Cosine Wave Signal
−2 −1 0 1 2 0
0
2
2
4
4
6
6 8
nn
nn
0.2
0.2
1
0.2
0.4
0.4
2
0.4
0.6
0.6
3
4
5
6
7
0.6
0.8
0.8
0.8
1
1
1
0
00
0 2 4 6 8
0
(a)
Amplitude
Amplitude
AmplitudeAmplitude
(b)
(d)(c)
1
1
0.5
0.5
0.5
0.5
0
0
1
1
1.5
(e)
(f)
1.5
2.5
2.5
3
3
3.5
3.5
2
2
0
0
−0.5
−0.5
−1
−1
n
n
AmplitudeAmplitude
4. 818 Digital Signal Processing
16.3 DISCRETE CONVOLUTION
16.3.1 Linear Convolution
Algorithm
1. Get two signals x(m)and h(p)in matrix form
2. The convolved signal is denoted as y(n)
3. y(n)is given by the formula
y(n) 5 [ ( ) ( )]x k h n k
k
−
=−∞
∞
∑ where n50 to m 1 p 2 1
4. Stop
% Program for linear convolution of the sequence x5[1, 2] and h5[1, 2, 4]
clc;
clear all;
close all;
x5input(‘enter the 1st sequence’);
h5input(‘enter the 2nd sequence’);
y5conv(x,h);
figure;subplot(3,1,1);
stem(x);ylabel(‘Amplitude --.’);
xlabel(‘(a) n --.’);
subplot(3,1,2);
stem(h);ylabel(‘Amplitude --.’);
xlabel(‘(b) n --.’);
subplot(3,1,3);
stem(y);ylabel(‘Amplitude --.’);
xlabel(‘(c) n --.’);
disp(‘The resultant signal is’);y
As an example,
enter the 1st sequence [1 2]
enter the 2nd sequence [1 2 4]
The resultant signal is
y51 4 8 8
Figure 16.2 shows the discrete input signals x(n)and h(n)and the convolved output
signal y(n).
Fig. 16.2 (Contd.)
AmplitudeAmplitude
n
n
0
0
0.5
1
1
1
1.1
1.2
1.2
1.4
1.3
1.6
1.4
1.8
1.5
2
(a)
(b)
1.6
2.2
1.7
2.4
1.8
2.6
1.9
2.8
2
3
1
2
1.5
3
2
4
5. MATLAB Programs 819
16.3.2 Circular Convolution
% Program for Computing Circular Convolution
clc;
clear;
a = input(‘enter the sequence x(n) = ’);
b = input(‘enter the sequence h(n) = ’);
n1=length(a);
n2=length(b);
N=max(n1,n2);
x = [a zeros(1,(N-n1))];
for i = 1:N
k = i;
for j = 1:n2
H(i,j)=x(k)* b(j);
k = k-1;
if (k == 0)
k = N;
end
end
end
y=zeros(1,N);
M=H’;
for j = 1:N
for i = 1:n2
y(j)=M(i,j)+y(j);
end
end
disp(‘The output sequence is y(n)= ‘);
disp(y);
Fig. 16.2 Discrete Linear Convolution
AmplitudeAmplitudeAmplitude
n
n
n
0
0
0
0.5
1
2
1
1
1
1.1
1.2
1.2
1.4
1.5
1.3
1.6
1.4
1.8
1.5
2
2
(a)
(b)
(c)
1.6
2.2
2.5
1.7
2.4
3
1.8
2.6
3.5
1.9
2.8
2
3
4
1
2
4
1.5
3
6
2
4
8
AmplitudeAmplitudeAmplitude
n
n
n
0
0
0
0.5
1
2
1
1
1
1.1
1.2
1.2
1.4
1.5
1.3
1.6
1.4
1.8
1.5
2
2
(a)
(b)
(c)
1.6
2.2
2.5
1.7
2.4
3
1.8
2.6
3.5
1.9
2.8
2
3
4
1
2
4
1.5
3
6
2
4
8
6. 820 Digital Signal Processing
stem(y);
title(‘Circular Convolution’);
xlabel(‘n’);
ylabel(‚y(n)‘);
As an Example,
enter the sequence x(n) = [1 2 4]
enter the sequence h(n) = [1 2]
The output sequence is y(n)= 9 4 8
% Program for Computing Circular Convolution with zero padding
clc;
close all;
clear all;
g5input(‘enter the first sequence’);
h5input(‘enter the 2nd sequence’);
N15length(g);
N25length(h);
N5max(N1,N2);
N35N12N2;
%Loop for getting equal length sequence
if(N350)
h5[h,zeros(1,N3)];
else
g5[g,zeros(1,2N3)];
end
%computation of circular convolved sequence
for n51:N,
y(n)50;
for i51:N,
j5n2i11;
if(j550)
j5N1j;
end
y(n)5y(n)1g(i)*h(j);
end
end
disp(‘The resultant signal is’);y
As an example,
enter the first sequence [1 2 4]
enter the 2nd sequence [1 2]
The resultant signal is y51 4 8 8
16.3.3 Overlap Save Method and Overlap Add method
% Program for computing Block Convolution using Overlap Save
Method
Overlap Save Method
x=input(‘Enter the sequence x(n) = ’);
7. MATLAB Programs 821
h=input(‘Enter the sequence h(n) = ’);
n1=length(x);
n2=length(h);
N=n1+n2-1;
h1=[h zeros(1,N-n1)];
n3=length(h1);
y=zeros(1,N);
x1=[zeros(1,n3-n2) x zeros(1,n3)];
H=fft(h1);
for i=1:n2:N
y1=x1(i:i+(2*(n3-n2)));
y2=fft(y1);
y3=y2.*H;
y4=round(ifft(y3));
y(i:(i+n3-n2))=y4(n2:n3);
end
disp(‘The output sequence y(n)=’);
disp(y(1:N));
stem(y(1:N));
title(‘Overlap Save Method’);
xlabel(‘n’);
ylabel(‘y(n)’);
Enter the sequence x(n) = [1 2 -1 2 3 -2 -3 -1 1 1 2 -1]
Enter the sequence h(n) = [1 2 3 -1]
The output sequence y(n) = 1 4 6 5 2 11 0 -16 -8 3 8 5 3 -5 1
%Program for computing Block Convolution using Overlap Add
Method
x=input(‘Enter the sequence x(n) = ’);
h=input(‘Enter the sequence h(n) = ’);
n1=length(x);
n2=length(h);
N=n1+n2-1;
y=zeros(1,N);
h1=[h zeros(1,n2-1)];
n3=length(h1);
y=zeros(1,N+n3-n2);
H=fft(h1);
for i=1:n2:n1
if i<=(n1+n2-1)
x1=[x(i:i+n3-n2) zeros(1,n3-n2)];
else
x1=[x(i:n1) zeros(1,n3-n2)];
end
x2=fft(x1);
x3=x2.*H;
x4=round(ifft(x3));
if (i==1)
8. 822 Digital Signal Processing
y(1:n3)=x4(1:n3);
else
y(i:i+n3-1)=y(i:i+n3-1)+x4(1:n3);
end
end
disp(‘The output sequence y(n)=’);
disp(y(1:N));
stem((y(1:N));
title(‘Overlap Add Method’);
xlabel(‘n’);
ylabel(‘y(n)’);
As an Example,
Enter the sequence x(n) = [1 2 -1 2 3 -2 -3 -1 1 1 2 -1]
Enter the sequence h(n) = [1 2 3 -1]
The output sequence
y(n) = 1 4 6 5 2 11 0 -16 -8 3 8 5 3 -5 1
16.4 DISCRETE CORRELATION
16.4.1 Crosscorrelation
Algorithm
1. Get two signals x(m)and h(p)in matrix form
2. The correlated signal is denoted as y(n)
3. y(n)is given by the formula
y(n) 5 [ ( ) ( )]x k h k n
k
−
=−∞
∞
∑
where n52 [max (m, p)2 1] to [max (m, p)2 1]
4. Stop
% Program for computing cross-correlation of the sequences
x5[1, 2, 3, 4] and h5[4, 3, 2, 1]
clc;
clear all;
close all;
x5input(‘enter the 1st sequence’);
h5input(‘enter the 2nd sequence’);
y5xcorr(x,h);
figure;subplot(3,1,1);
stem(x);ylabel(‘Amplitude --.’);
xlabel(‘(a) n --.’);
subplot(3,1,2);
stem(h);ylabel(‘Amplitude --.’);
xlabel(‘(b) n --.’);
subplot(3,1,3);
stem(fliplr(y));ylabel(‘Amplitude --.’);
9. MATLAB Programs 823
xlabel(‘(c) n --.’);
disp(‘The resultant signal is’);fliplr(y)
As an example,
enter the 1st sequence [1 2 3 4]
enter the 2nd sequence [4 3 2 1]
The resultant signal is
y51.0000 4.0000 10.0000 20.
↑
0000 25.0000 24.0000 16.0000
Figure 16.3 shows the discrete input signals x(n)and h(n)and the cross-correlated
output signal y(n).
AmplitudeAmplitudeAmplitude
n
n
n
0
0
1
1
1
1
1
1.5
1.5
2
2
2
3
3
3
5
2.5
2.5
4
(a)
(b)
(c)
3.5
3.5
6
4
4
7
2
2
3
3
4
4
30
20
10
0
Fig. 16.3 Discrete Cross-correlation
16.4.2 Autocorrelation
Algorithm
1. Get the signal x(n)of length N in matrix form
2. The correlated signal is denoted as y(n)
3. y(n)is given by the formula
y(n) 5 [ ( ) ( )]x k x k n
k
−
=−∞
∞
∑
where n52(N 2 1) to (N 2 1)
10. 824 Digital Signal Processing
% Program for computing autocorrelation function
x5input(‘enter the sequence’);
y5xcorr(x,x);
figure;subplot(2,1,1);
stem(x);ylabel(‘Amplitude --.’);
xlabel(‘(a) n --.’);
subplot(2,1,2);
stem(fliplr(y));ylabel(‘Amplitude --.’);
xlabel(‘(a) n --.’);
disp(‘The resultant signal is’);fliplr(y)
As an example,
enter the sequence [1 2 3 4]
The resultant signal is
y54 11 20
↑
30 20 11 4
Figure 16.4 shows the discrete input signal x(n)and its auto-correlated output
signal y(n).
( )
AmplitudeAmplitude
n
n
0
1
1
1
1.5
2
2
3
3
(a)
5
2.5
4
(b) y (n)
3.5
6
4
7
2
3
4
0
5
10
15
20
25
30
Fig. 16.4 Discrete Auto-correlation
16.5 STABILITY TEST
% Program for stability test
clc;clear all;close all;
b5input(‘enter the denominator coefficients of the
filter’);
k5poly2rc(b);
knew5fliplr(k);
s5all(abs(knew)1);
if(s55 1)
disp(‘“Stable system”’);
11. MATLAB Programs 825
else
disp(‘“Non-stable system”’);
end
As an example,
enter the denominator coefficients of the filter [1 21 .5]
“Stable system”
16.6 SAMPLING THEOREM
The sampling theorem can be understood well with the following example.
Example 16.1 Frequency analysis of the amplitude modulated discrete-time
signal
x(n)5cos 2 pf1
n 1 cos 2pf2
n
where f1
1
128
= and f2
5
128
= modulates the amplitude-modulated signal is
xc
(n)5cos 2p fc
n
where fc
550/128. The resulting amplitude-modulated signal is
xam
(n)5x(n) cos 2p fc
n
Using MATLAB program,
(a) sketch the signals x(n), xc
(n) and xam
(n), 0 # n # 255
(b) compute and sketch the 128-point DFT of the signal xam
(n), 0 # n # 127
(c) compute and sketch the 128-point DFT of the signal xam
(n), 0 # n # 99
Solution
% Program
Solution for Section (a)
clc;close all;clear all;
f151/128;f255/128;n50:255;fc550/128;
x5cos(2*pi*f1*n)1cos(2*pi*f2*n);
xa5cos(2*pi*fc*n);
xamp5x.*xa;
subplot(2,2,1);plot(n,x);title(‘x(n)’);
xlabel(‘n --.’);ylabel(‘amplitude’);
subplot(2,2,2);plot(n,xc);title(‘xa(n)’);
xlabel(‘n --.’);ylabel(‘amplitude’);
subplot(2,2,3);plot(n,xamp);
xlabel(‘n --.’);ylabel(‘amplitude’);
%128 point DFT computation2solution for Section (b)
n50:127;figure;n15128;
f151/128;f255/128;fc550/128;
x5cos(2*pi*f1*n)1cos(2*pi*f2*n);
xc5cos(2*pi*fc*n);
xa5cos(2*pi*fc*n);
(Contd.)
12. 826 Digital Signal Processing
−2
−1
0
1
2
Amplitude
0 100 200 300
(iii) n
Fig. 16.5(a) (iii) Amplitude Modulated Signal
Fig. 16.5(a) (ii) Carrier Signal and
−1
−0.5
0
0.5
1
Amplitude
0 100 200 300
(ii) n
0
−2
−1
0
1
2
100
Amplitude
200
(i)
300
n
Fig. 16.5(a) (i) Modulating Signal x (n)
(Contd.)
13. MATLAB Programs 827
20
Amplitude
40 60 80 100 120
n
1400
−10
−5
0
5
10
15
20
25
Fig. 16.5(b) 128-point DFT of the Signal xam
(n), 0 # n # 127
20 40 60 80 100 120 140
n
0
−5
0
5
10
15
20
25
30
35
Amplitude
Fig. 16.5(c) 128-point DFT of the Signal xam
(n), 0 # n # 99
14. 828 Digital Signal Processing
xamp5x.*xa;xam5fft(xamp,n1);
stem(n,xam);title(‘xamp(n)’);xlabel(‘n --.’);
ylabel(‘amplitude’);
%128 point DFT computation2solution for Section (c)
n50:99;figure;n250:n121;
f151/128;f255/128;fc550/128;
x5cos(2*pi*f1*n)1cos(2*pi*f2*n);
xc5cos(2*pi*fc*n);
xa5cos(2*pi*fc*n);
xamp5x.*xa;
for i51:100,
xamp1(i)5xamp(i);
end
xam5fft(xamp1,n1);
s t e m ( n 2 , x a m ) ; t i t l e ( ‘ x a m p ( n ) ’ ) ; x l a b e l ( ‘ n
--.’);ylabel(‘amplitude’);
(a)Modulated signal x(n), carrier signal xa
(n) and amplitude modulated signal
xam
(n) are shown in Fig. 16.5(a). Fig. 16.5 (b) shows the 128-point DFT of the
signal xam
(n) for 0 # n # 127 and Fig. 16.5 (c) shows the 128-point DFT of the
signal xam
(n), 0 # n # 99.
16.7 FAST FOURIER TRANSFORM
Algorithm
1. Get the signal x(n)of length N in matrix form
2. Get the N value
3. The transformed signal is denoted as
x k x n e k N
j
N
nk
n
N
( ) ( ) for= ≤ ≤ −
−
=
−
∑
2
0
1
0 1
p
% Program for computing discrete Fourier transform
clc;close all;clear all;
x5input(‘enter the sequence’);
n5input(‘enter the length of fft’);
X(k)5fft(x,n);
stem(y);ylabel(‘Imaginary axis --.’);
xlabel(‘Real axis --.’);
X(k)
As an example,
enter the sequence [0 1 2 3 4 5 6 7]
enter the length of fft 8
X(k)5
Columns 1 through 4
28.0000 24.000019.6569i 24.0000 14.0000i 24.0000
1 1.6569i
Columns 5 through 8
24.0000 24.0000 21.6569i 24.0000 24.0000i 24.0000
29.6569i
15. MATLAB Programs 829
The eight-point decimation-in-time fast Fourier transform of the sequence x(n)is
computed using MATLAB program and the resultant output is plotted in Fig. 16.6.
0−5
−10
−8
−6
−4
−2
0
2
4
6
8
10
5 10 15 20 25 30
Real axis
Imaginaryaxis
Fig. 16.6 Fast Fourier Transform
16.8 BUTTERWORTH ANALOG FILTERS
16.8.1 Low-pass Filter
Algorithm
1. Get the passband and stopband ripples
2. Get the passband and stopband edge frequencies
3. Get the sampling frequency
4. Calculate the order of the filter using Eq. 8.46
5. Find the filter coefficients
6. Draw the magnitude and phase responses.
% Program for the design of Butterworth analog low pass filter
clc;
close all;clear all;
format long
rp5input(‘enter the passband ripple’);
rs5input(‘enter the stopband ripple’);
wp5input(‘enter the passband freq’);
ws5input(‘enter the stopband freq’);
fs5input(‘enter the sampling freq’);
16. 830 Digital Signal Processing
w152*wp/fs;w252*ws/fs;
[n,wn]5buttord(w1,w2,rp,rs,’s’);
[z,p,k]5butter(n,wn);
[b,a]5zp2tf(z,p,k);
[b,a]5butter(n,wn,’s’);
w50:.01:pi;
[h,om]5freqs(b,a,w);
m520*log10(abs(h));
an5angle(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 --.’);
As an example,
enter the passband ripple 0.15
enter the stopband ripple 60
enter the passband freq 1500
enter the stopband freq 3000
enter the stopband freq 7000
The amplitude and phase responses of the Butterworth low-pass analog filter are
shown in Fig. 16.7.
Fig. 16.7 Butterworth Low-pass Analog Filter
(a) Amplitude Response and (b) Phase Response
0.1
0.1
−250
−200
−150
−4
−2
2
4
0
−100
−50
50
GainindB
0
0.2
0.2
0.3
0.3
0.4
0.4
(a)
(b)
Normalised frequency
Normalised frequency
0.5
0.5
0.6
0.6
0.7
0.7
0.8
0.8
0.9
0.9
1
1
0
0
Phaseinradians
0.1
0.1
−250
−200
−150
−4
−2
2
4
0
−100
−50
50
GainindB
0
0.2
0.2
0.3
0.3
0.4
0.4
(a)
(b)
Normalised frequency
Normalised frequency
0.5
0.5
0.6
0.6
0.7
0.7
0.8
0.8
0.9
0.9
1
1
0
0
Phaseinradians
17. MATLAB Programs 831
16.8.2 High-pass Filter
Algorithm
1. Get the passband and stopband ripples
2. Get the passband and stopband edge frequencies
3. Get the sampling frequency
4. Calculate the order of the filter using Eq. 8.46
5. Find the filter coefficients
6. Draw the magnitude and phase responses.
% Program for the design of Butterworth analog high—pass filter
clc;
close all;clear all;
format long
rp5input(‘enter the passband ripple’);
rs5input(‘enter the stopband ripple’);
wp5input(‘enter the passband freq’);
ws5input(‘enter the stopband freq’);
fs5input(‘enter the sampling freq’);
w152*wp/fs;w252*ws/fs;
[n,wn]5buttord(w1,w2,rp,rs,’s’);
[b,a]5butter(n,wn,’high’,’s’);
w50:.01:pi;
[h,om]5freqs(b,a,w);
m520*log10(abs(h));
an5angle(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 --.’);
As an example,
enter the passband ripple 0.2
enter the stopband ripple 40
enter the passband freq 2000
enter the stopband freq 3500
enter the sampling freq 8000
The amplitude and phase responses of Butterworth high-pass analog filter are
shown in Fig. 16.8.
18. 832 Digital Signal Processing
16.8.3 Bandpass Filter
Algorithm
1. Get the passband and stopband ripples
2. Get the passband and stopband edge frequencies
3. Get the sampling frequency
4. Calculate the order of the filter using Eq. 8.46
5. Find the filter coefficients
6. Draw the magnitude and phase responses.
% Program for the design of Butterworth analog Bandpass filter
clc;
close all;clear all;
format long
rp5input(‘enter the passband ripple...’);
rs5input(‘enter the stopband ripple...’);
wp5input(‘enter the passband freq...’);
ws5input(‘enter the stopband freq...’);
fs5input(‘enter the sampling freq...’);
w152*wp/fs;w252*ws/fs;
Fig. 16.8 Butterworth High-pass Analog Filter (a) Amplitude Response and
(b) Phase Response
GainindB
Phaseinradians
(a)
(b)
0.1
0.1
−400
−4
4
−2
2
0
−300
−200
−100
0
100
0.2
0.2
0.3
0.3
0.4
0.4
Normalised frequency
Normalised frequency
0.5
0.5
0.6
0.6
0.7
0.7
0.8
0.8
0.9
0.9
1
1
0
0
GainindB
Phaseinradians
(a)
(b)
0.1
0.1
−400
−4
4
−2
2
0
−300
−200
−100
0
100
0.2
0.2
0.3
0.3
0.4
0.4
Normalised frequency
Normalised frequency
0.5
0.5
0.6
0.6
0.7
0.7
0.8
0.8
0.9
0.9
1
1
0
0
19. MATLAB Programs 833
[n]5buttord(w1,w2,rp,rs);
wn5[w1 w2];
[b,a]5butter(n,wn,’bandpass’,’s’);
w50:.01:pi;
[h,om]5freqs(b,a,w);
m520*log10(abs(h));
an5angle(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 --.’);
As an example,
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
The amplitude and phase responses of Butterworth bandpass analog filter are
shown in Fig. 16.9.
Fig. 16.9 Butterworth Bandpass Analog Filter (a) Amplitude Response and
(b) Phase Response
GainindB
Phaseinradians
(a)
(b)
0.1
0.1
−1000
−4
4
−2
2
0
−800
−600
−200
−400
0
200
0.2
0.2
0.3
0.3
0.4
0.4
Normalised frequency
Normalised frequency
0.5
0.5
0.6
0.6
0.7
0.7
0.8
0.8
0.9
0.9
1
1
0
0
20. 834 Digital Signal Processing
16.8.4 Bandstop Filter
Algorithm
1. Get the passband and stopband ripples
2. Get the passband and stopband edge frequencies
3. Get the sampling frequency
4. Calculate the order of the filter using Eq. 8.46
5. Find the filter coefficients
6. Draw the magnitude and phase responses.
% Program for the design of Butterworth analog Bandstop filter
clc;
close all;clear all;
format long
rp5input(‘enter the passband ripple...’);
rs5input(‘enter the stopband ripple...’);
wp5input(‘enter the passband freq...’);
ws5input(‘enter the stopband freq...’);
fs5input(‘enter the sampling freq...’);
w152*wp/fs;w252*ws/fs;
[n]5buttord(w1,w2,rp,rs,’s’);
wn5[w1 w2];
[b,a]5butter(n,wn,’stop’,’s’);
w50:.01:pi;
[h,om]5freqs(b,a,w);
m520*log10(abs(h));
an5angle(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 --.’);
As an example,
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
The amplitude and phase responses of Butterworth bandstop analog filter are
shown in Fig. 16.10.
21. MATLAB Programs 835
16.9 CHEBYSHEV TYPE-1 ANALOG FILTERS
16.9.1 Low-pass Filter
Algorithm
1. Get the passband and stopband ripples
2. Get the passband and stopband edge frequencies
3. Get the sampling frequency
4. Calculate the order of the filter using Eq. 8.57
5. Find the filter coefficients
6. Draw the magnitude and phase responses.
% Program for the design of Chebyshev Type-1 low-pass filter
clc;
close all;clear all;
format long
rp5input(‘enter the passband ripple...’);
rs5input(‘enter the stopband ripple...’);
wp5input(‘enter the passband freq...’);
ws5input(‘enter the stopband freq...’);
fs5input(‘enter the sampling freq...’);
GainindB
Phaseinradians
(a)
(b)
0.1
0.1
−4
4
−2
2
0
−150
−50
−100
−200
0
50
0.2
0.2
0.3
0.3
0.4
0.4
Normalised frequency
Normalised frequency
0.5
0.5
0.6
0.6
0.7
0.7
0.8
0.8
0.9
0.9
1
1
0
0
Fig. 16.10 Butterworth Bandstop Analog Filter (a) Amplitude Response and
(b) Phase Response
GainindB
Phaseinradians
(a)
(b)
0.1
0.1
−4
4
−2
2
0
−150
−50
−100
−200
0
50
0.2
0.2
0.3
0.3
0.4
0.4
Normalised frequency
Normalised frequency
0.5
0.5
0.6
0.6
0.7
0.7
0.8
0.8
0.9
0.9
1
1
0
0
22. 836 Digital Signal Processing
w152*wp/fs;w252*ws/fs;
[n,wn]5cheb1ord(w1,w2,rp,rs,’s’);
[b,a]5cheby1(n,rp,wn,’s’);
w50:.01:pi;
[h,om]5freqs(b,a,w);
m520*log10(abs(h));
an5angle(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 --.’);
As an example,
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
The amplitude and phase responses of Chebyshev type - 1 low-pass analog filter
are shown in Fig. 16.11.
GainindBPhaseinradians
(a)
(b)
0.1
0.1
−4
4
−2
2
0
−80
−40
−20
−60
−100
0
0.2
0.2
0.3
0.3
0.4
0.4
Normalised frequency
Normalised frequency
0.5
0.5
0.6
0.6
0.7
0.7
0.8
0.8
0.9
0.9
1
1
0
0
Fig. 16.11 Chebyshev Type-I Low-pass Analog Filter (a) Amplitude Response
and (b) Phase Response
23. MATLAB Programs 837
16.9.2 High-pass Filter
Algorithm
1. Get the passband and stopband ripples
2. Get the passband and stopband edge frequencies
3. Get the sampling frequency
4. Calculate the order of the filter using Eq. 8.57
5. Find the filter coefficients
6. Draw the magnitude and phase responses.
%Program for the design of Chebyshev Type-1 high-pass filter
clc;
close all;clear all;
format long
rp5input(‘enter the passband ripple...’);
rs5input(‘enter the stopband ripple...’);
wp5input(‘enter the passband freq...’);
ws5input(‘enter the stopband freq...’);
fs5input(‘enter the sampling freq...’);
w152*wp/fs;w252*ws/fs;
[n,wn]5cheb1ord(w1,w2,rp,rs,’s’);
[b,a]5cheby1(n,rp,wn,’high’,’s’);
w50:.01:pi;
[h,om]5freqs(b,a,w);
m520*log10(abs(h));
an5angle(h);
subplot(2,1,1);plot(om/pi,m);
Fig. 16.12 Chebyshev Type - 1 High-pass Analog Filter (a) Amplitude Response
and (b) Phase Response
GainindB
Phaseinradians
(a)
(b)
0.1
0.1
−4
4
−2
2
0
−100
−50
−150
−200
0
0.2
0.2
0.3
0.3
0.4
0.4
Normalised frequency
Normalised frequency
0.5
0.5
0.6
0.6
0.7
0.7
0.8
0.8
0.9
0.9
1
1
0
0
GainindB
Phaseinradians
(a)
(b)
0.1
0.1
−4
4
−2
2
0
−100
−50
−150
−200
0
0.2
0.2
0.3
0.3
0.4
0.4
Normalised frequency
Normalised frequency
0.5
0.5
0.6
0.6
0.7
0.7
0.8
0.8
0.9
0.9
1
1
0
0
24. 838 Digital Signal Processing
ylabel(‘Gain in dB --.’);xlabel(‘(a) Normalised
frequency --.’);
subplot(2,1,2);plot(om/pi,an);
xlabel(‘(b) Normalised frequency --.’);
ylabel(‘Phase in radians --.’);
As an example,
enter the passband ripple... 0.29
enter the stopband ripple... 29
enter the passband freq... 900
enter the stopband freq... 1300
enter the sampling freq... 7500
The amplitude and phase responses of Chebyshev type - 1 high-pass analog filter
are shown in Fig. 16.12.
16.9.3 Bandpass Filter
Algorithm
1. Get the passband and stopband ripples
2. Get the passband and stopband edge frequencies
3. Get the sampling frequency
4. Calculate the order of the filter using Eq. 8.57
5. Find the filter coefficients
6. Draw the magnitude and phase responses.
% Program for the design of Chebyshev Type-1 Bandpass filter
clc;
close all;clear all;
format long
rp5input(‘enter the passband ripple...’);
rs5input(‘enter the stopband ripple...’);
wp5input(‘enter the passband freq...’);
ws5input(‘enter the stopband freq...’);
fs5input(‘enter the sampling freq...’);
w152*wp/fs;w252*ws/fs;
[n]5cheb1ord(w1,w2,rp,rs,’s’);
wn5[w1 w2];
[b,a]5cheby1(n,rp,wn,’bandpass’,’s’);
w50:.01:pi;
[h,om]5freqs(b,a,w);
m520*log10(abs(h));
an5angle(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 --.’);
As an example,
enter the passband ripple... 0.3
enter the stopband ripple... 40
enter the passband freq... 1400
25. MATLAB Programs 839
enter the stopband freq... 2000
enter the sampling freq... 5000
The amplitude and phase responses of Chebyshev type - 1 bandpass analog filter
are shown in Fig. 16.13.
16.9.4 Bandstop Filter
Algorithm
1. Get the passband and stopband ripples
2. Get the passband and stopband edge frequency
3. Get the sampling frequency
4. Calculate the order of the filter using Eq. 8.57
5. Find the filter coefficients
6. Draw the magnitude and phase responses.
% Program for the design of Chebyshev Type-1 Bandstop filter
clc;
close all;clear all;
format long
rp5input(‘enter the passband ripple...’);
rs5input(‘enter the stopband ripple...’);
wp5input(‘enter the passband freq...’);
ws5input(‘enter the stopband freq...’);
Fig. 16.13 Chebyshev Type-1 Bandpass Analog Filter
(a) Amplitude Response and (b) Phase Response
GainindB
Phaseinradians
(a)
(b)
0.1
0.1
−3
3
−2
−1
1
2
0
−200
−100
−300
−400
0
0.2
0.2
0.3
0.3
0.4
0.4
Normalised frequency
Normalised frequency
0.5
0.5
0.6
0.6
0.7
0.7
0.8
0.8
0.9
0.9
1
1
0
0
GainindB
Phaseinradians
(a)
(b)
0.1
0.1
−3
3
−2
−1
1
2
0
−200
−100
−300
−400
0
0.2
0.2
0.3
0.3
0.4
0.4
Normalised frequency
Normalised frequency
0.5
0.5
0.6
0.6
0.7
0.7
0.8
0.8
0.9
0.9
1
1
0
0
26. 840 Digital Signal Processing
fs5input(‘enter the sampling freq...’);
w152*wp/fs;w252*ws/fs;
[n]5cheb1ord(w1,w2,rp,rs,’s’);
wn5[w1 w2];
[b,a]5cheby1(n,rp,wn,’stop’,’s’);
w50:.01:pi;
[h,om]5freqs(b,a,w);
m520*log10(abs(h));
an5angle(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 --.’);
As an example,
enter the passband ripple... 0.15
enter the stopband ripple... 30
enter the passband freq... 2000
enter the stopband freq... 2400
enter the sampling freq... 7000
The amplitude and phase responses of Chebyshev type - 1 bandstop analog filter
are shown in Fig. 16.14.
Fig. 16.14 Chebyshev Type - 1 Bandstop Analog Filter
(a) Amplitude Response and (b) Phase Response
GainindB
Phaseinradians
(a)
(b)
0.1
0.1
−4
4
−2
2
0
−150
−50
−100
−200
−250
0
0.2
0.2
0.3
0.3
0.4
0.4
Normalised frequency
Normalised frequency
0.5
0.5
0.6
0.6
0.7
0.7
0.8
0.8
0.9
0.9
1
1
0
0
GainindB
Phaseinradians
(a)
(b)
0.1
0.1
−4
4
−2
2
0
−150
−50
−100
−200
−250
0
0.2
0.2
0.3
0.3
0.4
0.4
Normalised frequency
Normalised frequency
0.5
0.5
0.6
0.6
0.7
0.7
0.8
0.8
0.9
0.9
1
1
0
0
27. MATLAB Programs 841
16.10 CHEBYSHEV TYPE-2 ANALOG FILTERS
16.10.1 Low-pass Filter
Algorithm
1. Get the passband and stopband ripples
2. Get the passband and stopband edge frequencies
3. Get the sampling frequency
4. Calculate the order of the filter using Eq. 8.67
5. Find the filter coefficients
6. Draw the magnitude and phase responses.
% Program for the design of Chebyshev Type-2 low pass analog filter
clc;
close all;clear all;
format long
rp5input(‘enter the passband ripple...’);
rs5input(‘enter the stopband ripple...’);
wp5input(‘enter the passband freq...’);
ws5input(‘enter the stopband freq...’);
fs5input(‘enter the sampling freq...’);
w152*wp/fs;w252*ws/fs;
[n,wn]5cheb2ord(w1,w2,rp,rs,’s’);
[b,a]5cheby2(n,rs,wn,’s’);
w50:.01:pi;
[h,om]5freqs(b,a,w);
m520*log10(abs(h));
an5angle(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 --.’);
As an example,
enter the passband ripple... 0.4
enter the stopband ripple... 50
enter the passband freq... 2000
enter the stopband freq... 2400
enter the sampling freq... 10000
The amplitude and phase responses of Chebyshev type - 2 low-pass analog filter
are shown in Fig. 16.15.
28. 842 Digital Signal Processing
Fig. 16.15 Chebyshev Type - 2 Low-pass Analog Filter (a) Amplitude Response
and (b) Phase Response
GainindB
Phaseinradians
(a)
(b)
0.1
0.1
−4
4
−2
2
0
−60
−20
−40
−80
−100
0
0.2
0.2
0.3
0.3
0.4
0.4
Normalised frequency
Normalised frequency
0.5
0.5
0.6
0.6
0.7
0.7
0.8
0.8
0.9
0.9
1
1
0
0
16.10.2 High-pass Filter
Algorithm
1. Get the passband and stopband ripples
2. Get the passband and stopband edge frequencies
3. Get the sampling frequency
4. Calculate the order of the filter using Eq. 8.67
5. Find the filter coefficients
6. Draw the magnitude and phase responses.
% Program for the design of Chebyshev Type-2 High pass analog filter
clc;
close all;clear all;
format long
rp5input(‘enter the passband ripple...’);
rs5input(‘enter the stopband ripple...’);
wp5input(‘enter the passband freq...’);
ws5input(‘enter the stopband freq...’);
fs5input(‘enter the sampling freq...’);
w152*wp/fs;w252*ws/fs;
[n,wn]5cheb2ord(w1,w2,rp,rs,’s’);
[b,a]5cheby2(n,rs,wn,’high’,’s’);
w50:.01:pi;
29. MATLAB Programs 843
[h,om]5freqs(b,a,w);
m520*log10(abs(h));
an5angle(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 --.’);
As an example,
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
The amplitude and phase responses of Chebyshev type - 2 high-pass analog filter
are shown in Fig. 16.16.
GainindB
Phaseinradians
(a)
(b)
0.1
0.1
−4
4
−2
2
0
−60
−20
−40
−80
0
0.2
0.2
0.3
0.3
0.4
0.4
Normalised frequency
Normalised frequency
0.5
0.5
0.6
0.6
0.7
0.7
0.8
0.8
0.9
0.9
1
1
0
0
Fig. 16.16 Chebyshev Type - 2 High-pass Analog Filter
(a) Amplitude Response and (b) Phase Response
16.10.3 Bandpass Filter
Algorithm
1. Get the passband and stopband ripples
2. Get the passband and stopband edge frequencies
30. 844 Digital Signal Processing
3. Get the sampling frequency
4. Calculate the order of the filter using Eq. 8.67
5. Find the filter coefficients
6. Draw the magnitude and phase responses.
% Program for the design of Chebyshev Type-2 Bandpass analog filter
clc;
close all;clear all;
format long
rp5input(‘enter the passband ripple...’);
rs5input(‘enter the stopband ripple...’);
wp5input(‘enter the passband freq...’);
ws5input(‘enter the stopband freq...’);
fs5input(‘enter the sampling freq...’);
w152*wp/fs;w252*ws/fs;
[n]5cheb2ord(w1,w2,rp,rs,’s’);
wn5[w1 w2];
[b,a]5cheby2(n,rs,wn,’bandpass’,’s’);
w50:.01:pi;
[h,om]5freqs(b,a,w);
m520*log10(abs(h));
an5angle(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 --.’);
As an example,
enter the passband ripple... 0.37
enter the stopband ripple... 37
enter the passband freq... 3000
enter the stopband freq... 4000
enter the sampling freq... 9000
The amplitude and phase responses of Chebyshev type - 2 bandpass analog filter
are shown in Fig. 16.17.
Fig. 16.17 (Contd.)
GainindB
aseinradians
(a)
0.1
4
−2
2
0
−80
−60
−20
0
−40
−100
20
0.2 0.3 0.4
Normalised frequency
0.5 0.6 0.7 0.8 0.9 10
31. MATLAB Programs 845
16.10.4 Bandstop Filter
Algorithm
1. Get the passband and stopband ripples
2. Get the passband and stopband edge frequencies
3. Get the sampling frequency
4. Calculate the order of the filter using Eq. 8.67
5. Find the filter coefficients
6. Draw the magnitude and phase responses.
% Program for the design of Chebyshev Type-2 Bandstop analog filter
clc;
close all;clear all;
format long
rp5input(‘enter the passband ripple...’);
rs5input(‘enter the stopband ripple...’);
wp5input(‘enter the passband freq...’);
ws5input(‘enter the stopband freq...’);
fs5input(‘enter the sampling freq...’);
w152*wp/fs;w252*ws/fs;
[n]5cheb2ord(w1,w2,rp,rs,’s’);
wn5[w1 w2];
[b,a]5cheby2(n,rs,wn,’stop’,’s’);
w50:.01:pi;
[h,om]5freqs(b,a,w);
m520*log10(abs(h));
an5angle(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 --.’);
Fig. 16.17 Chebyshev Type - 2 Bandstop Analog Filter (a) Amplitude Response
and (b) Phase Response
Gainind
Phaseinradians
(a)
(b)
0.1
0.1
−4
4
−2
2
0
−80
−60
−40
−100
0.2
0.2
0.3
0.3
0.4
0.4
Normalised frequency
Normalised frequency
0.5
0.5
0.6
0.6
0.7
0.7
0.8
0.8
0.9
0.9
1
1
0
0
32. 846 Digital Signal Processing
As an example,
enter the passband ripple... 0.25
enter the stopband ripple... 30
enter the passband freq... 1300
enter the stopband freq... 2000
enter the sampling freq... 8000
The amplitude and phase responses of Chebyshev type - 2 bandstop analog filter
are shown in Fig. 16.18.
Fig. 16.18 Chebyshev Type - 2 Bandstop Analog Filter
(a) Amplitude Response and (b) Phase Response
GainindB
Phaseinradians
(a)
(b)
0.1
0.1
−4
4
−2
2
0
−60
−40
0
20
−20
−80
40
0.2
0.2
0.3
0.3
0.4
0.4
Normalised frequency
Normalised frequency
0.5
0.5
0.6
0.6
0.7
0.7
0.8
0.8
0.9
0.9
1
1
0
0
16.11 BUTTERWORTH DIGITAL IIR FILTERS
16.11.1 Low-pass Filter
Algorithm
1. Get the passband and stopband ripples
2. Get the passband and stopband edge frequencies
3. Get the sampling frequency
4. Calculate the order of the filter using Eq. 8.46
5. Find the filter coefficients
6. Draw the magnitude and phase responses.
33. MATLAB Programs 847
% Program for the design of Butterworth low pass digital filter
clc;
close all;clear all;
format long
rp5input(‘enter the passband ripple’);
rs5input(‘enter the stopband ripple’);
wp5input(‘enter the passband freq’);
ws5input(‘enter the stopband freq’);
fs5input(‘enter the sampling freq’);
w152*wp/fs;w252*ws/fs;
[n,wn]5buttord(w1,w2,rp,rs);
[b,a]5butter(n,wn);
w50:.01:pi;
[h,om]5freqz(b,a,w);
m520*log10(abs(h));
an5angle(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 --.’);
As an example,
enter the passband ripple 0.5
enter the stopband ripple 50
enter the passband freq 1200
enter the stopband freq 2400
enter the sampling freq 10000
The amplitude and phase responses of Butterworth low-pass digital filter are
shown in Fig. 16.19.
GainindB
Phaseinradians
(a)
0.1
0.1
−4
4
−2
2
0
−300
−200
0
−100
−400
100
0.2
0.2
0.3
0.3
0.4
0.4
Normalised frequency
0.5
0.5
0.6
0.6
0.7
0.7
0.8
0.8
0.9
0.9
1
1
0
0
Fig. 16.19 (Contd.)
34. 848 Digital Signal Processing
16.11.2 High-pass Filter
Algorithm
1. Get the passband and stopband ripples
2. Get the passband and stopband edge frequencies
3. Get the sampling frequency
4. Calculate the order of the filter using Eq. 8.46
5. Find the filter coefficients
6. Draw the magnitude and phase responses.
% Program for the design of Butterworth highpass digital filter
clc;
close all;clear all;
format long
rp5input(‘enter the passband ripple’);
rs5input(‘enter the stopband ripple’);
wp5input(‘enter the passband freq’);
ws5input(‘enter the stopband freq’);
fs5input(‘enter the sampling freq’);
w152*wp/fs;w252*ws/fs;
[n,wn]5buttord(w1,w2,rp,rs);
[b,a]5butter(n,wn,’high’);
w50:.01:pi;
[h,om]5freqz(b,a,w);
m520*log10(abs(h));
an5angle(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 --.’);
As an example,
enter the passband ripple 0.5
enter the stopband ripple 50
enter the passband freq 1200
Fig. 16.19 Butterworth Low-pass Digital Filter (a) Amplitude Response and
(b) Phase Response
Gain
Phaseinradians
(a)
(b)
0.1
0.1
−4
4
−2
2
0
−300
−200
−400
0.2
0.2
0.3
0.3
0.4
0.4
Normalised frequency
Normalised frequency
0.5
0.5
0.6
0.6
0.7
0.7
0.8
0.8
0.9
0.9
1
1
0
0
35. MATLAB Programs 849
enter the stopband freq 2400
enter the sampling freq 10000
The amplitude and phase responses of Butterworth high-pass digital filter are
shown in Fig. 16.20.
16.11.3 Band-pass Filter
Algorithm
1. Get the passband and stopband ripples
2. Get the passband and stopband edge frequencies
3. Get the sampling frequency
4. Calculate the order of the filter using Eq. 8.46
5. Find the filter coefficients
6. Draw the magnitude and phase responses.
% Program for the design of Butterworth Bandpass digital filter
clc;
close all;clear all;
format long
rp5input(‘enter the passband ripple’);
rs5input(‘enter the stopband ripple’);
wp5input(‘enter the passband freq’);
Fig. 16.20 Butterworth High-pass Digital Filter
(a) Amplitude Response and (b) Phase Response
GainindB
Phaseinradians
(a)
(b)
0.1
0.1
−4
4
−2
2
0
−250
−200
−150
0
−100
−50
−300
50
0.2
0.2
0.3
0.3
0.4
0.4
Normalised frequency
Normalised frequency
0.5
0.5
0.6
0.6
0.7
0.7
0.8
0.8
0.9
0.9
1
1
0
0
GainindB
Phaseinradians
(a)
(b)
0.1
0.1
−4
4
−2
2
0
−250
−200
−150
0
−100
−50
−300
50
0.2
0.2
0.3
0.3
0.4
0.4
Normalised frequency
Normalised frequency
0.5
0.5
0.6
0.6
0.7
0.7
0.8
0.8
0.9
0.9
1
1
0
0
36. 850 Digital Signal Processing
ws5input(‘enter the stopband freq’);
fs5input(‘enter the sampling freq’);
w152*wp/fs;w252*ws/fs;
[n]5buttord(w1,w2,rp,rs);
wn5[w1 w2];
[b,a]5butter(n,wn,’bandpass’);
w50:.01:pi;
[h,om]5freqz(b,a,w);
m520*log10(abs(h));
an5angle(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 --.’);
As an example,
enter the passband ripple 0.3
enter the stopband ripple 40
enter the passband freq 1500
enter the stopband freq 2000
enter the sampling freq 9000
The amplitude and phase responses of Butterworth band-pass digital filter are
shown in Fig. 16.21.
Fig. 16.21 Butterworth Bandstop Digital Filter (a) Amplitude Response and
(b) Phase Response
GainindB
(a)
(b)
Phaseinradians
0.1
0.1
0
− 200
− 100
− 400
− 500
− 600
− 700
4
2
0
− 2
− 4
− 300
0.2
0.2
0.3
0.3
0.4
0.4
Normalised frequency
Normalised frequency
0.5
0.5
0.6
0.6
0.7
0.7
0.8
0.8
0.9
0.9
1
1
0
0
37. MATLAB Programs 851
16.11.4 Bandstop Filter
Algorithm
1. Get the passband and stopband ripples
2. Get the passband and stopband edge frequencies
3. Get the sampling frequency
4. Calculate the order of the filter using Eq. 8.46
5. Find the filter coefficients
6. Draw the magnitude and phase responses.
% Program for the design of Butterworth Band stop digital filter
clc;
close all;clear all;
format long
rp5input(‘enter the passband ripple’);
rs5input(‘enter the stopband ripple’);
wp5input(‘enter the passband freq’);
ws5input(‘enter the stopband freq’);
fs5input(‘enter the sampling freq’);
w152*wp/fs;w252*ws/fs;
[n]5buttord(w1,w2,rp,rs);
wn5[w1 w2];
[b,a]5butter(n,wn,’stop’);
w50:.01:pi;
[h,om]5freqz(b,a,w);
m520*log10(abs(h));
an5angle(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 --.’);
As an example,
enter the passband ripple 0.4
enter the stopband ripple 46
enter the passband freq 1100
enter the stopband freq 2200
enter the sampling freq 6000
The amplitude and phase responses of the Butterworth bandstop digital filter are
shown in Fig. 16.22.
38. 852 Digital Signal Processing
Fig. 16.22 Butterworth Bandstop Digital Filter
(a) Amplitude Response and (b) Phase Response
GainindB
Phaseinradians
(a)
(b)
0.1
0.1
−4
4
−2
2
0
100
0
−200
−100
−400
−300
0.2
0.2
0.3
0.3
0.4
0.4
Normalised frequency
Normalised frequency
0.5
0.5
0.6
0.6
0.7
0.7
0.8
0.8
0.9
0.9
1
1
0
0
GainindB
Phaseinradians
(a)
(b)
0.1
0.1
−4
4
−2
2
0
100
0
−200
−100
−400
−300
0.2
0.2
0.3
0.3
0.4
0.4
Normalised frequency
Normalised frequency
0.5
0.5
0.6
0.6
0.7
0.7
0.8
0.8
0.9
0.9
1
1
0
0
16.12 CHEBYSHEV TYPE-1 DIGITAL FILTERS
16.12.1 Low-pass Filter
Algorithm
1. Get the passband and stopband ripples
2. Get the passband and stopband edge frequencies
3. Get the sampling frequency
4. Calculate the order of the filter using Eq. 8.57
5. Find the filter coefficients
6. Draw the magnitude and phase responses.
% Program for the design of Chebyshev Type-1 lowpass digital filter
clc;
close all;clear all;
format long
rp5input(‘enter the passband ripple...’);
rs5input(‘enter the stopband ripple...’);
wp5input(‘enter the passband freq...’);
ws5input(‘enter the stopband freq...’);
fs5input(‘enter the sampling freq...’);
39. MATLAB Programs 853
w152*wp/fs;w252*ws/fs;
[n,wn]5cheb1ord(w1,w2,rp,rs);
[b,a]5cheby1(n,rp,wn);
w50:.01:pi;
[h,om]5freqz(b,a,w);
m520*log10(abs(h));
an5angle(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 --.’);
As an example,
enter the passband ripple... 0.2
enter the stopband ripple... 45
enter the passband freq... 1300
enter the stopband freq... 1500
enter the sampling freq... 10000
The amplitude and phase responses of Chebyshev type - 1 low-pass digital filter
are shown in Fig. 16.23.
Fig. 16.23 Chebyshev Type - 1 Low-pass Digital Filter (a) Amplitude Response
and (b) Phase Response
GainindB
Phaseinradians
(a)
(b)
0.1
0.1
−4
4
−2
2
0
0
−200
−100
−500
−400
−300
0.2
0.2
0.3
0.3
0.4
0.4
Normalised frequency
Normalised frequency
0.5
0.5
0.6
0.6
0.7
0.7
0.8
0.8
0.9
0.9
1
1
0
0
40. 854 Digital Signal Processing
16.12.2 High-pass Filter
Algorithm
1. Get the passband and stopband ripples
2. Get the passband and stopband edge frequencies
3. Get the sampling frequency
4. Calculate the order of the filter using Eq. 8.57
5. Find the filter coefficients
6. Draw the magnitude and phase responses.
% Program for the design of Chebyshev Type-1 highpass digital
filter
clc;
close all;clear all;
format long
rp5input(‘enter the passband ripple...’);
rs5input(‘enter the stopband ripple...’);
wp5input(‘enter the passband freq...’);
ws5input(‘enter the stopband freq...’);
fs5input(‘enter the sampling freq...’);
w152*wp/fs;w252*ws/fs;
[n,wn]5cheb1ord(w1,w2,rp,rs);
[b,a]5cheby1(n,rp,wn,’high’);
w50:.01/pi:pi;
[h,om]5freqz(b,a,w);
m520*log10(abs(h));
an5angle(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 --.’);
As an example,
enter the passband ripple... 0.3
enter the stopband ripple... 60
enter the passband freq... 1500
enter the stopband freq... 2000
enter the sampling freq... 9000
The amplitude and phase responses of Chebyshev type - 1 high-pass digital filter
are shown in Fig. 16.24.
41. MATLAB Programs 855
16.12.3 Bandpass Filter
Algorithm
1. Get the passband and stopband ripples
2. Get the passband and stopband edge frequencies
3. Get the sampling frequency
4. Calculate the order of the filter using Eq. 8.57
5. Find the filter coefficients
6. Draw the magnitude and phase responses.
% Program for the design of Chebyshev Type-1 Bandpass digital filter
clc;
close all;clear all;
format long
rp5input(‘enter the passband ripple...’);
rs5input(‘enter the stopband ripple...’);
wp5input(‘enter the passband freq...’);
ws5input(‘enter the stopband freq...’);
fs5input(‘enter the sampling freq...’);
w152*wp/fs;w252*ws/fs;
Fig. 16.24 Chebyshev Type - 1 High-pass Digital Filter
(a) Amplitude Response and (b) Phase Response
GainindB
Phaseinradians
(a)
(b)
0.1
0.1
−4
4
−2
2
0
0
−250
−200
−150
−100
−50
−350
−300
0.2
0.2
0.3
0.3
0.4
0.4
Normalised frequency
Normalised frequency
0.5
0.5
0.6
0.6
0.7
0.7
0.8
0.8
0.9
0.9
1
1
0
0
GainindB
Phaseinradians
(a)
(b)
0.1
0.1
−4
4
−2
2
0
0
−250
−200
−150
−100
−50
−350
−300
0.2
0.2
0.3
0.3
0.4
0.4
Normalised frequency
Normalised frequency
0.5
0.5
0.6
0.6
0.7
0.7
0.8
0.8
0.9
0.9
1
1
0
0
42. 856 Digital Signal Processing
[n]5cheb1ord(w1,w2,rp,rs);
wn5[w1 w2];
[b,a]5cheby1(n,rp,wn,’bandpass’);
w50:.01:pi;
[h,om]5freqz(b,a,w);
m520*log10(abs(h));
an5angle(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 --.’);
As an example,
enter the passband ripple... 0.4
enter the stopband ripple... 35
enter the passband freq... 2000
enter the stopband freq... 2500
enter the sampling freq... 10000
The amplitude and phase responses of Chebyshev type - 1 bandpass digital filter
are shown in Fig. 16.25.
GainindB
Phaseinradians
(a)
(b)
0.1
0.1
−4
4
−2
2
0
0
−300
−200
−100
−500
−400
0.2
0.2
0.3
0.3
0.4
0.4
Normalised frequency
Normalised frequency
0.5
0.5
0.6
0.6
0.7
0.7
0.8
0.8
0.9
0.9
1
1
0
0
Fig. 16.25 Chebyshev Type - 1 Bandpass Digital Filter (a) Amplitude
Response and (b) Phase Response
43. MATLAB Programs 857
16.12.4 Bandstop Filter
Algorithm
1. Get the passband and stopband ripples
2. Get the passband and stopband edge frequencies
3. Get the sampling frequency
4. Calculate the order of the filter using Eq. 8.57
5. Find the filter coefficients
6. Draw the magnitude and phase responses.
% Program for the design of Chebyshev Type-1 Bandstop digital filter
clc;
close all;clear all;
format long
rp5input(‘enter the passband ripple...’);
rs5input(‘enter the stopband ripple...’);
wp5input(‘enter the passband freq...’);
ws5input(‘enter the stopband freq...’);
fs5input(‘enter the sampling freq...’);
w152*wp/fs;w252*ws/fs;
[n]5cheb1ord(w1,w2,rp,rs);
wn5[w1 w2];
[b,a]5cheby1(n,rp,wn,’stop’);
w50:.1/pi:pi;
[h,om]5freqz(b,a,w);
m520*log10(abs(h));
an5angle(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 --.’);
As an example,
enter the passband ripple... 0.25
enter the stopband ripple... 40
enter the passband freq... 2500
enter the stopband freq... 2750
enter the sampling freq... 7000
The amplitude and phase responses of Chebyshev type - 1 bandstop digital filter
are shown in Fig. 16.26.
44. 858 Digital Signal Processing
Fig. 16.26 Chebyshev Type - 1 Bandstop Digital Filter
(a) Amplitude Response and (b) Phase Response
GainindB
Phaseinradians
(a)
(b)
0.1
0.1
−3
−2
−1
1
2
3
4
0
0
− 200
− 150
− 100
−50
0.2
0.2
0.3
0.3
0.4
0.4
Normalised frequency
Normalised frequency
0.5
0.5
0.6
0.6
0.7
0.7
0.8
0.8
0.9
0.9
1
1
0
0
GainindB
Phaseinradians
(a)
(b)
0.1
0.1
−3
−2
−1
1
2
3
4
0
0
− 200
− 150
− 100
−50
0.2
0.2
0.3
0.3
0.4
0.4
Normalised frequency
Normalised frequency
0.5
0.5
0.6
0.6
0.7
0.7
0.8
0.8
0.9
0.9
1
1
0
0
16.13 CHEBYSHEV TYPE-2 DIGITAL FILTERS
16.13.1 Low-pass Filter
Algorithm
1. Get the passband and stopband ripples
2. Get the passband and stopband edge frequencies
3. Get the sampling frequency
4. Calculate the order of the filter using Eq. 8.67
5. Find the filter coefficients
6. Draw the magnitude and phase responses.
% Program for the design of Chebyshev Type-2 lowpass digital filter
clc;
close all;clear all;
format long
rp5input(‘enter the passband ripple...’);
rs5input(‘enter the stopband ripple...’);
wp5input(‘enter the passband freq...’);
ws5input(‘enter the stopband freq...’);
fs5input(‘enter the sampling freq...’);
w152*wp/fs;w252*ws/fs;
[n,wn]5cheb2ord(w1,w2,rp,rs);
[b,a]5cheby2(n,rs,wn);
45. MATLAB Programs 859
w50:.01:pi;
[h,om]5freqz(b,a,w);
m520*log10(abs(h));
an5angle(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 --.’);
As an example,
enter the passband ripple... 0.35
enter the stopband ripple... 35
enter the passband freq... 1500
enter the stopband freq... 2000
enter the sampling freq... 8000
The amplitude and phase responses of Chebyshev type - 2 low-pass digital filter
are shown in Fig. 16.27.
Fig. 16.27 Chebyshev Type - 2 Low-pass Digital Filter (a) Amplitude Response
and (b) Phase Response
GainindB
Phaseinradians
(a)
(b)
0.1
0.1
−4
−2
2
4
0
−100
−80
−60
−40
−20
0
20
0.2
0.2
0.3
0.3
0.4
0.4
Normalised frequency
Normalised frequency
0.5
0.5
0.6
0.6
0.7
0.7
0.8
0.8
0.9
0.9
1
1
0
0
GainindB
Phaseinradians
(a)
(b)
0.1
0.1
−4
−2
2
4
0
−100
−80
−60
−40
−20
0
20
0.2
0.2
0.3
0.3
0.4
0.4
Normalised frequency
Normalised frequency
0.5
0.5
0.6
0.6
0.7
0.7
0.8
0.8
0.9
0.9
1
1
0
0
16.13.2 High-pass Filter
Algorithm
1. Get the passband and stopband ripples
2. Get the passband and stopband edge frequencies
46. 860 Digital Signal Processing
3. Get the sampling frequency
4. Calculate the order of the filter using Eq. 8.67
5. Find the filter coefficients
6. Draw the magnitude and phase responses.
% Program for the design of Chebyshev Type-2 high pass digital filter
clc;
close all;clear all;
format long
rp5input(‘enter the passband ripple...’);
rs5input(‘enter the stopband ripple...’);
wp5input(‘enter the passband freq...’);
ws5input(‘enter the stopband freq...’);
fs5input(‘enter the sampling freq...’);
w152*wp/fs;w252*ws/fs;
[n,wn]5cheb2ord(w1,w2,rp,rs);
[b,a]5cheby2(n,rs,wn,’high’);
w50:.01/pi:pi;
[h,om]5freqz(b,a,w);
m520*log10(abs(h));
an5angle(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 --.’);
As an example,
enter the passband ripple... 0.25
enter the stopband ripple... 40
enter the passband freq... 1400
enter the stopband freq... 1800
enter the sampling freq... 7000
The amplitude and phase responses of Chebyshev type - 2 high-pass digital filter
are shown in Fig. 16.28.
GainindB
aseinradians
(a)
0.1
−2
2
4
0
−120
−100
−80
−60
−40
−20
0
0.2 0.3 0.4
Normalised frequency
0.5 0.6 0.7 0.8 0.9 10
Fig. 16.28 (Contd.)
47. MATLAB Programs 861
16.13.3 Bandpass Filter
Algorithm
1. Get the passband and stopband ripples
2. Get the passband and stopband edge frequency
3. Get the sampling frequency
4. Calculate the order of the filter using Eq. 8.67
5. Find the filter coefficients
6. Draw the magnitude and phase responses.
% Program for the design of Chebyshev Type-2 Bandpass digital filter
clc;
close all;clear all;
format long
rp5input(‘enter the passband ripple...’);
rs5input(‘enter the stopband ripple...’);
wp5input(‘enter the passband freq...’);
ws5input(‘enter the stopband freq...’);
fs5input(‘enter the sampling freq...’);
w152*wp/fs;w252*ws/fs;
[n]5cheb2ord(w1,w2,rp,rs);
wn5[w1 w2];
[b,a]5cheby2(n,rs,wn,’bandpass’);
w50:.01/pi:pi;
[h,om]5freqz(b,a,w);
m520*log10(abs(h));
an5angle(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 --.’);
Gainin
Phaseinradians
(a)
(b)
0.1
0.1
−4
−2
2
4
0
−120
−100
−80
0.2
0.2
0.3
0.3
0.4
0.4
Normalised frequency
Normalised frequency
0.5
0.5
0.6
0.6
0.7
0.7
0.8
0.8
0.9
0.9
1
1
0
0
Fig. 16.28 Chebyshev Type - 2 High-pass Digital Filter (a) Amplitude Response
and (b) Phase Response
48. 862 Digital Signal Processing
As an example,
enter the passband ripple... 0.4
enter the stopband ripple... 40
enter the passband freq... 1400
enter the stopband freq... 2000
enter the sampling freq... 9000
The amplitude and phase responses of Chebyshev type - 2 bandpass digital filter
are shown in Fig. 16.29.
Fig. 16.29 Chebyshev Type - 2 Bandpass Digital Filter (a) Amplitude Response
and (b) Phase Response
GainindB
Phaseinradians
(a)
(b)
0.1
0.1
−4
−2
4
0
2
−400
−300
−200
−100
0
100
0.2
0.2
0.3
0.3
0.4
0.4
Normalised frequency
Normalised frequency
0.5
0.5
0.6
0.6
0.7
0.7
0.8
0.8
0.9
0.9
1
1
0
0
16.13.4 Bandstop Filter
Algorithm
1. Get the passband and stopband ripples
2. Get the passband and stopband edge frequencies
3. Get the sampling frequency
4. Calculate the order of the filter using Eq. 8.67
5. Find the filter coefficients
6. Draw the magnitude and phase responses.
49. MATLAB Programs 863
% Program for the design of Chebyshev Type-2 Bandstop digital filter
clc;
close all;clear all;
format long
rp5input(‘enter the passband ripple...’);
rs5input(‘enter the stopband ripple...’);
wp5input(‘enter the passband freq...’);
ws5input(‘enter the stopband freq...’);
fs5input(‘enter the sampling freq...’);
w152*wp/fs;w252*ws/fs;
[n]5cheb2ord(w1,w2,rp,rs);
wn5[w1 w2];
[b,a]5cheby2(n,rs,wn,’stop’);
w50:.1/pi:pi;
[h,om]5freqz(b,a,w);
m520*log10(abs(h));
an5angle(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 --.’);
As an example,
enter the passband ripple... 0.3
enter the stopband ripple... 46
enter the passband freq... 1400
enter the stopband freq... 2000
enter the sampling freq... 8000
The amplitude and phase responses of Chebyshev type - 2 bandstop digital filter
are shown in Fig. 16.30.
GainindB
Phaseinradians
(a)
0.1
-4
-2
-1
-3
3
0
1
2
−80
−60
−40
−20
0
20
0.2 0.3 0.4
Normalised frequency
0.5 0.6 0.7 0.8 0.9 10
Fig. 16.30 (Contd.)
50. 864 Digital Signal Processing
16.14
FIR FILTER DESIGN USING WINDOW
TECHNIQUES
In the design of FIR filters using any window technique, the order can be calculated
using the formula given by
N
p s
f f Fs p s
=
− −
−
20 13
14 6
log( )
. ( ) /
d d
where dp is the passband ripple, ds is the stopband ripple, fp
is the passband frequency,
fs
is the stopband frequency and Fs
is the sampling frequency.
16.14.1 Rectangular Window
Algorithm
1. Get the passband and stopband ripples
2. Get the passband and stopband edge frequencies
3. Get the sampling frequency
4. Calculate the order of the filter
5. Find the window coefficients using Eq. 7.37
6. Draw the magnitude and phase responses.
% Program for the design of FIR Low pass, High pass, Band pass
and Bandstop filters using rectangular window
clc;clear all;close all;
rp5input(‘enter the passband ripple’);
rs5input(‘enter the stopband ripple’);
fp5input(‘enter the passband freq’);
fs5input(‘enter the stopband freq’);
f5input(‘enter the sampling freq’);
wp52*fp/f;ws52*fs/f;
num5220*log10(sqrt(rp*rs))213;
Fig. 16.30 Chebyshev Type - 2 Bandstop Digital Filter (a) Amplitude Response
and (b) Phase Response
Gaini
Phaseinradians
(a)
(b)
0.1
0.1
-4
-2
-1
-3
3
0
1
2
−80
−60
−40
0.2
0.2
0.3
0.3
0.4
0.4
Normalised frequency
Normalised frequency
0.5
0.5
0.6
0.6
0.7
0.7
0.8
0.8
0.9
0.9
1
1
0
0
51. MATLAB Programs 865
dem514.6*(fs2fp)/f;
n5ceil(num/dem);
n15n11;
if (rem(n,2)˜50)
n15n;
n5n21;
end
y5boxcar(n1);
% low-pass filter
b5fir1(n,wp,y);
[h,o]5freqz(b,1,256);
m520*log10(abs(h));
subplot(2,2,1);plot(o/pi,m);ylabel(‘Gain in dB --.’);
xlabel(‘(a) Normalised frequency --.’);
% high-pass filter
b5fir1(n,wp,’high’,y);
[h,o]5freqz(b,1,256);
m520*log10(abs(h));
subplot(2,2,2);plot(o/pi,m);ylabel(‘Gain in dB --.’);
xlabel(‘(b) Normalised frequency --.’);
% band pass filter
wn5[wp ws];
b5fir1(n,wn,y);
[h,o]5freqz(b,1,256);
m520*log10(abs(h));
subplot(2,2,3);plot(o/pi,m);ylabel(‘Gain in dB --’);
xlabel(‘(c) Normalised frequency --’);
% band stop filter
b5fir1(n,wn,’stop’,y);
[h,o]5freqz(b,1,256);
m520*log10(abs(h));
subplot(2,2,4);plot(o/pi,m);ylabel(‘Gain in dB --’);
xlabel(‘(d) Normalised frequency --’);
As an example,
enter the passband ripple 0.05
enter the stopband ripple 0.04
enter the passband freq 1500
enter the stopband freq 2000
enter the sampling freq 9000
The gain responses of low-pass, high-pass, bandpass and bandstop filters using
rectangular window are shown in Fig. 16.31.
52. 866 Digital Signal Processing
16.14.2 Bartlett Window
Algorithm
1. Get the passband and stopband ripples
2. Get the passband and stopband edge frequencies
3. Get the sampling frequency
4. Calculate the order of the filter
5. Find the filter coefficients
6. Draw the magnitude and phase responses.
% Program for the design of FIR Low pass, High pass, Band pass
and Bandstop filters using Bartlett window
clc;clear all;close all;
rp5input(‘enter the passband ripple’);
rs5input(‘enter the stopband ripple’);
fp5input(‘enter the passband freq’);
fs5input(‘enter the stopband freq’);
f5input(‘enter the sampling freq’);
Fig. 16.31 Filters Using Rectangular Window (a) Low-pass (b) High-pass
(c) Bandpass and (d) Bandstop
0.2
0.2
0.2
0.2
−80
−80 −20
−80
−60
−60 −15
−60
−40
−40 −10
−40
−20
−20 −5
−20
0
0 0
0
20
20 5
20
0.4
0.4
0.4
0.4
(a)
(c)
(b)
(d)
Normalised frequency
Normalised frequency
Normalised frequency
Normalised frequency
0.6
0.6
0.6
0.6
0.8
0.8
0.8
0.8
1
1
1
1
0
0
0
0
GainindBGainindB
GainindBGainindB
53. MATLAB Programs 867
wp52*fp/f;ws52*fs/f;
num5220*log10(sqrt(rp*rs))213;
dem514.6*(fs2fp)/f;
n5ceil(num/dem);
n15n11;
if (rem(n,2)˜50)
n15n;
n5n21;
end
y5bartlett(n1);
% low-pass filter
b5fir1(n,wp,y);
[h,o]5freqz(b,1,256);
m520*log10(abs(h));
subplot(2,2,1);plot(o/pi,m);ylabel(‘Gain in dB --.’);
xlabel(‘(a) Normalised frequency --.’);
% high-pass filter
b5fir1(n,wp,’high’,y);
[h,o]5freqz(b,1,256);
m520*log10(abs(h));
subplot(2,2,2);plot(o/pi,m);ylabel(‘Gain in dB --.’);
xlabel(‘(b) Normalised frequency --.’);
% band pass filter
wn5[wp ws];
b5fir1(n,wn,y);
[h,o]5freqz(b,1,256);
m520*log10(abs(h));
subplot(2,2,3);plot(o/pi,m);ylabel(‘Gain in dB --.’);
xlabel(‘(c) Normalised frequency --.’);
% band stop filter
b5fir1(n,wn,’stop’,y);
[h,o]5freqz(b,1,256);
m520*log10(abs(h));
subplot(2,2,4);plot(o/pi,m);ylabel(‘Gain in dB --.’);
xlabel(‘(d) Normalised frequency --.’);
As an example,
enter the passband ripple 0.04
enter the stopband ripple 0.02
enter the passband freq 1500
enter the stopband freq 2000
enter the sampling freq 8000
The gain responses of low-pass, high-pass, bandpass and bandstop filters using
Bartlett window are shown in Fig. 16.32.
54. 868 Digital Signal Processing
16.14.3 Blackman window
Algorithm
1. Get the passband and stopband ripples
2. Get the passband and stopband edge frequencies
3. Get the sampling frequency
4. Calculate the order of the filter
5. Find the window coefficients using Eq. 7.45
6. Draw the magnitude and phase responses.
% Program for the design of FIR Low pass, High pass, Band pass
and Band stop digital filters using Blackman window
clc;clear all;close all;
rp5input(‘enter the passband ripple’);
rs5input(‘enter the stopband ripple’);
fp5input(‘enter the passband freq’);
fs5input(‘enter the stopband freq’);
f5input(‘enter the sampling freq’);
Fig. 16.32 Filters using Bartlett Window (a) Low-pass (b) High-pass
(c) Bandpass and (d) Bandstop
− 35
−40 −8
− 30
−30
−6
− 30
−25
−25
−20
−20
−4
− 20
−15
− 15
−10
−10
−2
−0
− 10
−5
−5
0
20
5
0
0.2
0.2
0.2
0.2
0.4
0.4
0.4
0.4
(a)
(c)
(b)
(d)
Normalised frequency
Normalised frequency
Normalised frequency
Normalised frequency
0.6
0.6
0.6
0.6
0.8
0.8
0.8
0.8
1
1
1
1
0
0
0
0
GainindB
GainindBGainindB
GainindB
55. MATLAB Programs 869
wp52*fp/f;ws52*fs/f;
num5220*log10(sqrt(rp*rs))213;
dem514.6*(fs2fp)/f;
n5ceil(num/dem);
n15n11;
if (rem(n,2)˜50)
n15n;
n5n21;
end
y5blackman(n1);
% low-pass filter
b5fir1(n,wp,y);
[h,o]5freqz(b,1,256);
m520*log10(abs(h));
subplot(2,2,1);plot(o/pi,m);ylabel(‘Gain in dB --.’);
xlabel(‘(a) Normalised frequency --.’);
% high-pass filter
b5fir1(n,wp,’high’,y);
[h,o]5freqz(b,1,256);
m520*log10(abs(h));
subplot(2,2,2);plot(o/pi,m);ylabel(‘Gain in dB --.’);
xlabel(‘(b) Normalised frequency --.’);
% band pass filter
wn5[wp ws];
b5fir1(n,wn,y);
[h,o]5freqz(b,1,256);
m520*log10(abs(h));
subplot(2,2,3);plot(o/pi,m);ylabel(‘Gain in dB --.’);
xlabel(‘(c) Normalised frequency --.’);
% band stop filter
b5fir1(n,wn,’stop’,y);
[h,o]5freqz(b,1,256);
m520*log10(abs(h));
subplot(2,2,4);plot(o/pi,m);;ylabel(‘Gain in dB --.’);
xlabel(‘(d) Normalised frequency --.’);
As an example,
enter the passband ripple 0.03
enter the stopband ripple 0.01
enter the passband freq 2000
enter the stopband freq 2500
enter the sampling freq 7000
The gain responses of low-pass, high-pass, bandpass and bandstop filters using
Blackman window are shown in Fig. 16.33.
56. 870 Digital Signal Processing
16.14.4 Chebyshev Window
Algorithm
1. Get the passband and stopband ripples
2. Get the passband and stopband edge frequencies
3. Get the sampling frequency
4. Calculate the order of the filter
5. Find the filter coefficients
6. Draw the magnitude and phase responses.
% Program for the design of FIR Lowpass, High pass, Band pass
and Bandstop filters using Chebyshev window
clc;clear all;close all;
rp5input(‘enter the passband ripple’);
rs5input(‘enter the stopband ripple’);
fp5input(‘enter the passband freq’);
fs5input(‘enter the stopband freq’);
f5input(‘enter the sampling freq’);
Fig. 16.33 Filters using Blackman Window (a) Low-pass (b) High-pass
(c) Bandpass and (d) Bandstop
−120
−120 −8
−150
−100
−100
−100 −6
−80
−60
− 80
−4
−40
−20
− 60
− 40
− 20
−2
0
−50
0
0
20
20
50
0.2
0.2
0.2
0.2
0.4
0.4
0.4
0.4
(a)
(c)
(b)
(d)
Normalised frequency
Normalised frequency
Normalised frequency
Normalised frequency
0.6
0.6
0.6
0.6
0.8
0.8
0.8
0.8
1
1
1
1
0
0
0
0
GainindB
GainindB
GainindB
GainindB
57. MATLAB Programs 871
r5input(‘enter the ripple value(in dBs)’);
wp52*fp/f;ws52*fs/f;
num5220*log10(sqrt(rp*rs))213;
dem514.6*(fs2fp)/f;
n5ceil(num/dem);
if(rem(n,2)˜50)
n5n11;
end
y5chebwin(n,r);
% low-pass filter
b5fir1(n-1,wp,y);
[h,o]5freqz(b,1,256);
m520*log10(abs(h));
subplot(2,2,1);plot(o/pi,m);ylabel(‘Gain in dB --.’);
xlabel(‘(a) Normalised frequency --.’);
% high-pass filter
b5fir1(n21,wp,’high’,y);
[h,o]5freqz(b,1,256);
m520*log10(abs(h));
subplot(2,2,2);plot(o/pi,m);ylabel(‘Gain in dB --.’);
xlabel(‘(b) Normalised frequency --.’);
% band-pass filter
wn5[wp ws];
b5fir1(n21,wn,y);
[h,o]5freqz(b,1,256);
m520*log10(abs(h));
subplot(2,2,3);plot(o/pi,m);ylabel(‘Gain in dB --.’);
xlabel(‘(c) Normalised frequency --.’);
% band-stop filter
b5fir1(n21,wn,’stop’,y);
[h,o]5freqz(b,1,256);
m520*log10(abs(h));
subplot(2,2,4);plot(o/pi,m);ylabel(‘Gain in dB --.’);
xlabel(‘(d) Normalised frequency --.’);
As an example,
enter the passband ripple 0.03
enter the stopband ripple 0.02
enter the passband freq 1800
enter the stopband freq 2400
enter the sampling freq 10000
enter the ripple value(in dBs)40
The gain responses of low-pass, high-pass, bandpass and bandstop filters using
Chebyshev window are shown in Fig. 16.34.
58. 872 Digital Signal Processing
16.14.5 Hamming Window
Algorithm
1. Get the passband and stopband ripples
2. Get the passband and stopband edge frequencies
3. Get the sampling frequency
4. Calculate the order of the filter
5. Find the window coefficients using Eq. 7.40
6. Draw the magnitude and phase responses.
% Program for the design of FIR Low pass, High pass, Band pass
and Bandstop filters using Hamming window
clc;clear all;close all;
rp5input(‘enter the passband ripple’);
rs5input(‘enter the stopband ripple’);
fp5input(‘enter the passband freq’);
fs5input(‘enter the stopband freq’);
f5input(‘enter the sampling freq’);
Fig. 16.34 Filters using Chebyshev Window (a) Low-pass (b) High-pass
(c) Bandpass and (d) Bandstop
−100
−120 −12
−100
−40
−20
−60
−80− 80
−100 −10
−60
− 40
− 80
−8
− 20
− 60
− 40
− 20
−6
−4
−2
0
0
20
0
20
20
0.2
0.2
0.2
0.2
0.4
0.4
0.4
0.4
(a)
(c)
(b)
(d)
Normalised frequency
Normalised frequency
Normalised frequency
Normalised frequency
0.6
0.6
0.6
0.6
0.8
0.8
0.8
0.8
1
1
1
1
0
0
0
0
GainindB
GainindBGainindB
GainindB
59. MATLAB Programs 873
wp52*fp/f;ws52*fs/f;
num5220*log10(sqrt(rp*rs))213;
dem514.6*(fs2fp)/f;
n5ceil(num/dem);
n15n11;
if (rem(n,2)˜50)
n15n;
n5n21;
end
y5hamming(n1);
% low-pass filter
b5fir1(n,wp,y);
[h,o]5freqz(b,1,256);
m520*log10(abs(h));
subplot(2,2,1);plot(o/pi,m);ylabel(‘Gain in dB --.’);
xlabel(‘(a) Normalised frequency --.’);
% high-pass filter
b5fir1(n,wp,’high’,y);
[h,o]5freqz(b,1,256);
m520*log10(abs(h));
subplot(2,2,2);plot(o/pi,m);ylabel(‘Gain in dB --.’);
xlabel(‘(b) Normalised frequency --.’);
% band pass filter
wn5[wp ws];
b5fir1(n,wn,y);
[h,o]5freqz(b,1,256);
m520*log10(abs(h));
subplot(2,2,3);plot(o/pi,m);ylabel(‘Gain in dB --.’);
xlabel(‘(c) Normalised frequency --.’);
% band stop filter
b5fir1(n,wn,’stop’,y);
[h,o]5freqz(b,1,256);
m520*log10(abs(h));
subplot(2,2,4);plot(o/pi,m);ylabel(‘Gain in dB --.’);
xlabel(‘(d) Normalised frequency --.’);
As an example,
enter the passband ripple 0.02
enter the stopband ripple 0.01
enter the passband freq 1200
enter the stopband freq 1700
enter the sampling freq 9000
The gain responses of low-pass, high-pass, bandpass and bandstop filters using
Hamming window are shown in Fig. 16.35.
60. 874 Digital Signal Processing
16.14.6 Hanning Window
Algorithm
1. Get the passband and stopband ripples
2. Get the passband and stopband edge frequencies
3. Get the sampling frequency
4. Calculate the order of the filter
5. Find the window coefficients using Eq. 7.44
6. Draw the magnitude and phase responses.
% Program for the design of FIR Low pass, High pass, Band pass
and Band stop filters using Hanning window
clc;clear all;close all;
rp5input(‘enter the passband ripple’);
rs5input(‘enter the stopband ripple’);
fp5input(‘enter the passband freq’);
fs5input(‘enter the stopband freq’);
f5input(‘enter the sampling freq’);
Fig. 16.35 Filters using Hamming Window (a) Low-pass (b) High-pass
(c) Bandpass and (d) Bandstop
−120
−120 −15
−100
−40
−20
−60
−80−100
−100
−10
−5
−80
− 60
− 80
− 40
− 20
− 60
− 40
− 20
0
0
20
0
20
20
0.2
0.2
0.2
0.2
0.4
0.4
0.4
0.4
(a)
(c)
(b)
(d)
Normalised frequency
Normalised frequency
Normalised frequency
Normalised frequency
0.6
0.6
0.6
0.6
0.8
0.8
0.8
0.8
1
1
1
1
0
0
0
0
GainindB
GainindBGainindB
GainindB
61. MATLAB Programs 875
wp52*fp/f;ws52*fs/f;
num5220*log10(sqrt(rp*rs))213;
dem514.6*(fs2fp)/f;
n5ceil(num/dem);
n15n11;
if (rem(n,2)˜50)
n15n;
n5n21;
end
y5hamming(n1);
% low-pass filter
b5fir1(n,wp,y);
[h,o]5freqz(b,1,256);
m520*log10(abs(h));
subplot(2,2,1);plot(o/pi,m);ylabel(‘Gain in dB --.’);
xlabel(‘(a) Normalised frequency --.’);
% high-pass filter
b5fir1(n,wp,’high’,y);
[h,o]5freqz(b,1,256);
m520*log10(abs(h));
subplot(2,2,2);plot(o/pi,m);ylabel(‘Gain in dB --.’);
xlabel(‘(b) Normalised frequency --.’);
% band pass filter
wn5[wp ws];
b5fir1(n,wn,y);
[h,o]5freqz(b,1,256);
m520*log10(abs(h));
subplot(2,2,3);plot(o/pi,m);ylabel(‘Gain in dB --.’);
xlabel(‘(c) Normalised frequency --.’);
% band stop filter
b5fir1(n,wn,’stop’,y);
[h,o]5freqz(b,1,256);
m520*log10(abs(h));
subplot(2,2,4);plot(o/pi,m);ylabel(‘Gain in dB --.’);
xlabel(‘(d) Normalised frequency --.’);
As an example,
enter the passband ripple 0.03
enter the stopband ripple 0.01
enter the passband freq 1400
enter the stopband freq 2000
enter the sampling freq 8000
The gain responses of low-pass, high-pass, bandpass and bandstop filters using
Hanning window are shown in Fig. 16.36.
62. 876 Digital Signal Processing
16.14.7 Kaiser Window
Algorithm
1. Get the passband and stopband ripples
2. Get the passband and stopband edge frequencies
3. Get the sampling frequency
4. Calculate the order of the filter
5. Find the window coefficients using Eqs 7.46 and 7.47
6. Draw the magnitude and phase responses.
% Program for the design of FIR Low pass, High pass, Band pass
and Bandstop filters using Kaiser window
clc;clear all;close all;
rp5input(‘enter the passband ripple’);
rs5input(‘enter the stopband ripple’);
fp5input(‘enter the passband freq’);
fs5input(‘enter the stopband freq’);
f5input(‘enter the sampling freq’);
beta5input(‘enter the beta value’);
Fig. 16.36 Filters using Hanning Window (a) Low-pass (b) High-pass
(c) Bandpass and (d) Bandstop
− 120
−120 −12
−100
−40
−20
−60
−80− 100
−100 −10
−8
−6
−4
−2
0
−80
−60
−80
−40
−20
−60
−40
−20
0
20
0
0 2
20
0.2
0.2
0.2
0.2
0.4
0.4
0.4
0.4
(a)
(c)
(b)
(d)
Normalised frequency
Normalised frequency
Normalised frequency
Normalised frequency
0.6
0.6
0.6
0.6
0.8
0.8
0.8
0.8
1
1
1
1
0
0
0
0
GainindB
GainindBGainindB
GainindB
63. MATLAB Programs 877
wp52*fp/f;ws52*fs/f;
num5220*log10(sqrt(rp*rs))213;
dem514.6*(fs2fp)/f;
n5ceil(num/dem);
n15n11;
if (rem(n,2)˜50)
n15n;
n5n21;
end
y5kaiser(n1,beta);
% low-pass filter
b5fir1(n,wp,y);
[h,o]5freqz(b,1,256);
m520*log10(abs(h));
subplot(2,2,1);plot(o/pi,m);ylabel(‘Gain in dB --’);
xlabel(‘(a) Normalised frequency --’);
% high-pass filter
b5fir1(n,wp,’high’,y);
[h,o]5freqz(b,1,256);
m520*log10(abs(h));
subplot(2,2,2);plot(o/pi,m);ylabel(‘Gain in dB --’);
xlabel(‘(b) Normalised frequency --’);
% band pass filter
wn5[wp ws];
b5fir1(n,wn,y);
[h,o]5freqz(b,1,256);
m520*log10(abs(h));
subplot(2,2,3);plot(o/pi,m);ylabel(‘Gain in dB --’);
xlabel(‘(c) Normalised frequency --’);
% band stop filter
b5fir1(n,wn,’stop’,y);
[h,o]5freqz(b,1,256);
m520*log10(abs(h));
subplot(2,2,4);plot(o/pi,m);ylabel(‘Gain in dB --’);
xlabel(‘(d) Normalised frequency --’);
As an example,
enter the passband ripple 0.02
enter the stopband ripple 0.01
enter the passband freq 1000
enter the stopband freq 1500
enter the sampling freq 10000
enter the beta value 5.8
The gain responses of low-pass, high-pass, bandpass and bandstop filters using
Kaiser window are shown in Fig. 16.37.
64. 878 Digital Signal Processing
16.15 UPSAMPLING A SINUSOIDAL SIGNAL
% Program for upsampling a sinusoidal signal by factor L
N5input(‘Input length of the sinusoidal sequence5’);
L5input(‘Up Samping factor5’);
fi5input(‘Input signal frequency5’);
% Generate the sinusoidal sequence for the specified length N
n50:N21;
x5sin(2*pi*fi*n);
% Generate the upsampled signal
y5zeros (1,L*length(x));
y([1:L:length(y)])5x;
%Plot the input sequence
subplot (2,1,1);
stem (n,x);
title(‘Input Sequence’);
xlabel(‘Time n’);
ylabel(‘Amplitude’);
Fig. 16.37 Filters using Kaiser Window (a) Low-pass (b) High-pass
(c) Bandpass and (d) Bandstop
−120
−120 −15
−40
−20
−60
−80
−100
−100
−10
−5
0
−80
− 60
− 80
− 40
− 20
− 60
− 40
− 20
0
20
0
0 5
20
0.2
0.2
0.2
0.2
0.4
0.4
0.4
0.4
(a)
(c)
(b)
(d)
Normalised frequency
Normalised frequency
Normalised frequency
Normalised frequency
0.6
0.6
0.6
0.6
0.8
0.8
0.8
0.8
1
1
1
1
0
0
0
0
GainindB
GainindB
GainindB
GainindB
65. MATLAB Programs 879
%Plot the output sequence
subplot (2,1,2);
stem (n,y(1:length(x)));
title(‘[output sequence,upsampling factor5‘,num2str(L)]);
xlabel(‘Time n’);
ylabel(‘Amplitude’);
16.16
UPSAMPLING AN EXPONENTIAL
SEQUENCE
% Program for upsampling an exponential sequence by a factor M
n5input(‘enter length of input sequence …’);
l5input(‘enter up sampling factor …’);
% Generate the exponential sequence
m50:n21;
a5input(‘enter the value of a …’);
x5a.^m;
% Generate the upsampled signal
y5zeros(1,l*length(x));
y([1:l:length(y)])5x;
figure(1)
stem(m,x);
xlabel({‘Time n’;’(a)’});
ylabel(‘Amplitude’);
figure(2)
stem(m,y(1:length(x)));
xlabel({‘Time n’;’(b)’});
ylabel(‘Amplitude’);
As an example,
enter length of input sentence … 25
enter upsampling factor … 3
enter the value of a … 0.95
The input and output sequences of upsampling an exponential sequence an
are shown
in Fig. 16.38.
Fig. 16.38 (Contd.)
66. 880 Digital Signal Processing
16.17
DOWN SAMPLING A SINUSOIDAL
SEQUENCE
% Program for down sampling a sinusoidal sequence by a factor M
N5input(‘Input length of the sinusoidal signal5’);
M5input(‘Down samping factor5’);
fi5input(‘Input signal frequency5’);
%Generate the sinusoidal sequence
n50:N21;
m50:N*M21;
x5sin(2*pi*fi*m);
%Generate the down sampled signal
y5x([1:M:length(x)]);
%Plot the input sequence
subplot (2,1,1);
stem(n,x(1:N));
title(‘Input Sequence’);
xlabel(‘Time n’);
ylabel(‘Amplitude’);
%Plot the down sampled signal sequence
subplot(2,1,2);
stem(n,y);
title([‘Outputsequencedownsamplingfactor’,num2str(M)]);
xlabel(‘Time n’);
ylabel(‘Amplitude’);
16.18
DOWN SAMPLING AN EXPONENTIAL
SEQUENCE
% Program for downsampling an exponential sequence by a factor M
N5input(‘enter the length of the output sequence …’);
M5input(‘enter the down sampling factor …’);
Fig. 16.38 (a) Input Exponential Sequence
(b) Output Sequence Upsampled by a Factor of 3
67. MATLAB Programs 881
% Generate the exponential sequence
n50:N21;
m50:N*M21;
a5input(‘enter the value of a …’);
x5a.^m;
% Generate the downsampled signal
y5x([1:M:length(x)]);
figure(1)
stem(n,x(1:N));
xlabel({‘Time n’;’(a)’});
ylabel(‘Amplitude’);
figure(2)
stem(n,y);
xlabel({‘Time n’;’(b)’});
ylabel(‘Amplitude’);
As an example,
enter the length of the output sentence … 25
enter the downsampling factor … 3
enter the value of a … 0.95
The input and output sequences of downsampling an exponential sequence an
are
shown in Fig. 16.39.
Fig. 16.39 (a) Input Exponential Sequence
(b) Output Sequence Downsampled by a Factor of 3
68. 882 Digital Signal Processing
16.19 DECIMATOR
% Program for downsampling the sum of two sinusoids using
MATLAB’s inbuilt decimation function by a factor M
N5input(‘Length of the input signal5’);
M5input(‘Down samping factor5’);
f15input(‘Frequency of first sinusoid5’);
f25input(‘Frequency of second sinusoid5’);
n50:N21;
% Generate the input sequence
x52*sin(2*pi*f1*n)13*sin(2*pi*f2*n);
%Generate the decimated signal
% FIR low pass decimation is used
y5decimate(x,M,‘fir’);
%Plot the input sequence
subplot (2,1,1);
stem (n,x(1:N));
title(‘Input Sequence’);
xlabel(‘Time n’);
ylabel(‘Amplitude’);
%Plot the output sequence
subplot (2,1,2);
m50:N/M21;
stem (m,y(1:N/M));
title([‘Outputsequencedownsamplingfactor’,num2str(M)]);
xlabel(‘Time n’);
ylabel(‘Amplitude’);
16.20 DECIMATOR AND INTERPOLATOR
% Program for downsampling and upsampling the sum of two
sinusoids using MATLAB’s inbuilt decimation and interpolation
function by a factor of 20.
%Generate the input sequence for Fs
5200Hz, f1
550Hz and
f2
5100 Hz
t50:1/200:10;
y53.*cos(2*pi*50.*t/200)11.*cos(2*pi*100.*t/200);
figure(1)
stem(y);
xlabel({‘Times in Seconds’;’(a)});
ylabel(‘Amplitude’);
69. MATLAB Programs 883
%Generate the decimated and interpolated signals
figure(2)
stem(decimate(y,20));
xlabel({‘Times in Seconds’;’(b)});
ylabel(‘Amplitude’);
figure(3)
stem(interp(decimate(y,20),2));
xlabel({‘Times in Seconds’;’(c)});
ylabel(‘Amplitude’);
Fig. 16.40 (a) Input Sequence, (b) Decimated Sequence and
(c) Interpolated sequence
5
0
AmplitudeAmplitude
0 500 1000
Time in Seconds
(a)
1500 2000 2500
−5
5
0
0 20 40
Time in Seconds
(b)
60 80 100 120
−5
Amplitude
5
0
0 50 100 150 200 250
Time in Seconds
(c)
−5
16.21
ESTIMATION OF POWER SPECTRAL
DENSITY (PSD)
% Program for estimating PSD of two sinusoids plus noise
% Algorithm;
% 1:Get the frequencies of the two sinusoidal waves
% 2:Get the sampling frequency
% 3:Get the length of the sequence to be considered
70. 884 Digital Signal Processing
% 4:Get the two FFT lengths for comparing the corre-
sponding power spectral densities
clc; close all; clear all;
f15input(‘Enter the frequency of first sinusoid’);
f25input(‘Enter the frequency of second sinusoid’);
fs5input(‘Enter the sampling frequency’);
N5input(“Enter the length of the input sequence’);
N15input(“Enter the input FFT length 1’);
N25input(“Enter the input FFT length 2’);
%Generation of input sequence
t50:1/fs:1;
x52*sin(2*pi*f1*1)13*sin(2*pi*f2*t)2randn(size(t));
%Generation of psd for two different FFT lengths
Pxx15abs(fft(x,N1)).^2/(N11);
Pxx25abs(fft(x,N2)).^2/(N11);
%Plot the psd;
subplot(2,1,1);
plot ((0:(N121))/N1*fs,10*log10(Pxx1));
xlabel(‘Frequency in Hz’);
ylabel(‘Power spectrum in dB’);
title(‘[PSD with FFT length,num2str(N1)]’);
subplot (2,1,2);
plot ((0:(N221))/N2*fs,10*log10(Pxx2));
xlabel(‘Frequency in Hz’);
ylabel(‘Power spectrum in dB’);
title(‘[PSD with FFT length,num2str(N2)]’);
16.22 PSD ESTIMATOR
% Program for estimating PSD of a two sinusoids plus noise using
%(i)non-overlapping sections
%(ii)overlapping sections and averaging the periodograms
clc; close all; clear all;
f15input(‘Enter the frequency of first sinusoid’);
f25input(‘Enter the frequency of second sinusoid’);
fs5input(‘Enter the sampling frequency’);
N5input(“Enter the length of the input sequence’);
N15input(“Enter the input FFT length 1’);
N25input(“Enter the input FFT length 2’);
%Generation of input sequence
t50:1/fs:1;
x52*sin(2*pi*f1*1)13*sin(2*pi*f2*t)2randn(size(t));
71. MATLAB Programs 885
%Generation of psd for two different FFT lengths
Pxx15(abs(fft(x(1:256))).^21abs(fft(x(257:512))).^21
abs(fft(x(513:768))).^2/(256*3); %using nonoverlapping
sections
Pxx25(abs(fft(x(1:256))).^21abs(fft(x(129:384))).^21ab
s(fft(x(257:512))).^21abs(fft(x(385:640))).^21abs(fft(
x(513:768))).^21abs(fft(x(641:896))).^2/(256*6); %using
overlapping sections
% Plot the psd;
subplot (2,1,1);
plot ((0:255)/256*fs,10*log10(Pxx1));
xlabel(‘Frequency in Hz’);
ylabel(‘Power spectrum in dB’);
title(‘[PSD with FFT length,num2str(N1)]’);
subplot (2,1,2);
plot ((0:255)/256*fs,10*log10(Pxx2));
xlabel(‘Frequency in Hz’);
ylabel(‘Power spectrum in dB’);
title(‘[PSD with FFT length,num2str(N2)]’);
16.23 PERIODOGRAM ESTIMATION
% Periodogram estimate cold be done by applying a non-
rectangular data windows to the sections prior to com-
puting the periodogram
% This program estimates PSD for the input signal of two
sinusoids plus noise using Hanning window
f15input(‘Enter the frequency of first sinusoid’);
f25input(‘Enter the frequency of second sinusoid’);
fs5input(‘Enter the sampling frequency’);
t50:1/fs:1;
w5hanning(256);
x52*sin(2*pi*f1*t)13*sin(2*pi*f2*t)2randn(size(t));
Pxx5(abs(fft(w.*x(1:256))).^21abs(fft(w.*x(129:384))).^
21abs(fft(w.*x(257:512))).^21abs(fft(w.*x(385:640))).^2
1abs(fft(w.*x(513:768))).^21abs(fft(w.*x(641:896))).^2/
(norm(w)^2*6);
Plot((0:255)/256*fs,10*log10(Pxx));
16.24 WELCH PSD ESTIMATOR
% Program for estimating the PSD of sum of two sinusoids plus
noise using Welch method
n50.01:0.001:.1;
x5sin(.25*pi*n)13*sin(.45*pi*n)1rand(size(n));
pwelch(x)
72. 886 Digital Signal Processing
xlabel(‘Normalised Frequency (x pi rad/sample)’);
ylabel(‘Power Spectrum Density (dB/rad/sample)’)
16.25 WELCH PSD ESTIMATOR USING WINDOWS
% Program for estimating the PSD of sum of two sinusoids using
Welch method with an overlap of 50 percent and with Hanning,
Hamming, Bartlett, Blackman and rectangular windows.
fs51000;
t50:1/fs:3;
x5sin(2*pi*200*t)1sin(2*pi*400*t);
figure(1)
subplot(211)
pwelch(x,[],[],[],fs);
title(‘Overlay plot of 50 Welch estimates’)
subplot(212)
pwelch(x,hanning(512),0,512,fs)
title(‘N5512 Overlap550% Hanning’)
figure(2)
subplot(211)
pwelch(x,[],[],[],fs);
title(‘Overlay plot of 50 Welch estimates’)
subplot(212)
pwelch(x,hamming(512),0,512,fs)
title(‘N5512 Overlap550% Hamming’)
figure(3)
subplot(211)
pwelch(x,[],[],[],fs);
title(‘Overlay plot of 50 Welch estimates’)
subplot(212)
pwelch(x,bartlett(512),0,512,fs)
title(‘N5512 Overlap550% Bartlett’)
figure(4)
subplot(211)
pwelch(x,[],[],[],fs);
Fig. 16.41 Welch PSD Estimate
5
0
−5
−10
−15
−20
0 0.1 0.2 0.3 0.4 0.5
Welch PSD Estimate
PowerSpectrumDensity(dB/rad/sample)
Normalised Frequency (x pi rad/sample)
0.6 0.7 0.8 0.9 1
79. MATLAB Programs 893
16.27 STATE-SPACE REPRESENTATION
% Program for computing the state-space matrices from the given
transfer function
function [A,B,C,D]5tf2ss(b,a);
a5input (‘enter the denominator polynomials5’);
b5input (‘enter the numerator polynomials5’);
p5length(a)21;q5length(b)21;N5max(p,q);
if(Np),a5[a,zeros(1,N2p)];end
if(Nq),b5[b,zeros(1,N2q)];end
A5[2a(2:N11);[eye(N21),zeros(N21,1)]];
B5[1;zeros(N21,1)];
C5b(2:N11)2b(1)*(2:N11);
D5b(1);
16.28 PARTIAL FRACTION DECOMPOSITION
% Program for partial fraction decomposition of a rational transfer
function
function[c,A,alpha]5tf2pf(b,a);
a5input (‘enter the denominator polynomials5’);
b5input (‘enter the numerator polynomials5’);
p5length(a)21;
q5length(b)21;
a5(1/a(1))*reshape(a,1,p11);
b5(1/a(1))*reshape(b,1,q11);
if(q5p),%case of nonempty c(z)
temp5toeplitz([a,zeros(1,q2p)]’,[a(1),zeros(1,q2p)]);
temp5[temp,[eye(p);zeros(q2p11,p)]);
temp5temp/b’;
c5temp(1:;q2p11);
d5temp(q2p12:q11)’;
else
c5[];
d5[b,zeros(1,p2q21)];
end
alpha5cplxpair (roots(a));’;
A5zeros(1,p);
for k51 :p
temp5prod(alpha(k)2alpha(find(1:p5k)));
if(temp550),error(‘repeated roots in TF2PF’);
else,A(k)5polyval(d,alpha(k))/temp;
end
end
80. 894 Digital Signal Processing
16.29 INVERSE z-TRANSFORM
% Program for computing inverse z-transform of a rational transfer
function
function x5invz(b,a,N);
b5input (‘enter the numerator polynomials5’);
a5input (‘enter the denominator polynomials5’);
N5input (‘enter the number of points to be computed5’);
[c,A,alpha]5tf2pf(b,a);
x5zeros (1,N);
x(1:length(c))5c;
for k51:length(A),
x5x1A(k)*(alpha(k)).^(0:N21);
end
x5real(x);
16.30 GROUP DELAY
% Program for computing group delay of a rational transfer
function on a given frequency interval
function D5grpdly(b,a,K,theta);
b5input (‘enter the numerator polynomials5’);
a5input (‘enter the denominator polynomials5’);
K5input (‘enter the number of frequency response
points5’);
theta5input (‘enter the theta value5’);
a5reshape(a,1,length(a));
b5reshape(b,1,length(b));
if (length(a)551)%case of FIR
bd52j*(0:length(b)21).*b;
if(nargin553),
B5frqresp(b,1,K);
Bd5frqresp(bd,1,K);
else,
B5frqresp(b,1,K,theta);
Bd5frqresp(bd,1,K,theta);
end
D5(real(Bd).*imag(B)2real(B).*imag(Bd))./abs(B).^2;
else %case of IIR
if(nargin553),
D5grpdly (b,1,K)2grpdly(a,1,K);
else,
D5grpdly(b,1,K,theta)2grpdly(a,1,K,theta);
end
end
81. MATLAB Programs 895
16.31
IIR FILTER DESIGN-IMPULSE INVARIANT
METHOD
% Program for transforming an analog filter into a digital filter using
impulse invariant technique
function [bout,aout]5impinv(bin,ain,T);
bin5input(‘enter the numerator polynomials5’);
ain5input(‘enter the denominator polynomials5’);
T5input(‘enter the sampling interval5’);
if(length(bin)5length(ain)),
error(‘Anlog filter in IMPINV is not strictly proper’);
end
[r,p,k]5residue(bin,ain);
[bout,aout]5pf2tf([],T*r,exp(T*p));
16.32
IIR FILTER DESIGN-BILINEAR
TRANSFORMATION
% Program for transforming an analog filter into a digial filter using
bilinear transformation
function [b,a,vout,uout,Cout]5bilin(vin,uin,Cin,T);
pin5input(‘enter the poles5’);
zin5input(‘enter the zero5’);
T5input(‘enter the sampling interval5’);
Cin5input(‘enter the gain of the analog filter5’);
p5length(pin);
q5length(zin);
Cout5Cin*(0.5*T)^(p2q)*prod(120.5*T*zin)/
prod(120.5*T*pin);
zout5[(110.5*T*zin)./(120.5*T*pin),2ones(1,p2q)];
pout5(110.5*T*pin)./(120.5*T*pin);
a51;
b51;
for k51 :length(pout),a5conv(a,[1,2pout(k)]); end
for k51 :length(zout),b5conv(b,[1,2zout(k)]); end
a5real(a);
b5real(Cout*b);
Cout5real(Cout);
16.33
DIRECT REALISATION OF IIR DIGITAL
FILTERS
% Program for computing direct realisation values of IIR digital filter
function y5direct(typ,b,a,x);
x5input(‘enter the input sequence5’);
82. 896 Digital Signal Processing
b5input(‘enter the numerator polynomials5’);
a5input(‘enter the denominator polynomials5’);
typ5input(‘type of realisation5’);
p5length(a)21;
q5length(b)21;
pq5max(p,q);
a5a(2:p11);u5zeros(1,pq);%u is the internal state;
if(typ551)
for i51:length(x),
unew5x(i)2sum(u(1:p).*a);
u5[unew,u];
y(i)5sum(u(1:q11).*b);
u5u(1:pq);
end
elseif(typ552)
for i51:length(x)
y(i)5b(1)*x(i)1u(1);
u5u[(2:pq),0];
u(1:q)5u(1:q)1b(2:q11)*x(i);
u(1:p)5u(1:p)2a*y(i);
end
end
16.34
PARALLEL REALISATION OF IIR DIGITAL
FILTERS
% Program for computing parallel realisation values of IIR digital
filter
function y5parallel(c,nsec,dsec,x);
x5input(‘enter the input sequence5’);
b5input(‘enter the numerator polynomials5’);
a5input(‘enter the denominator polynomials5’);
c5input(‘enter the gain of the filter5’);
[n,m]5size(a);a5a(:,2:3);
u5zeros(n,2);
for i51:length(x),
y(i)5c*x(i);
for k51:n,
unew5x(i)2sum(u(k,:).*a(k,:));u(k,:)5[unew,u(k,1)];
y(i)5y(i)1sum(u(k,:).*b(k,:));
end
end
83. MATLAB Programs 897
16.35
CASCADE REALISATION OF IIR DIGITAL
FILTERS
% Program for computing cascade realisation values of digital IIR filter
function y5cascade(c,nsec,dsec,x);
x5input(‘enter the input sequence5’);
b5input(‘enter the numerator polynomials5’);
a5input(‘enter the denomiator polynomials5’);
c5input(‘enter the gain of the filter5’);
[n,m]5size(b);
a5a(:,2:3);b5b(:,2,:3);
u5zeros(n,2);
for i51 :length(x),
for k51 :n,
unew5x(i)2sum(u(k,:).*a(k,:));
x(i)52unew1sum(u(k,:).*b(k,:))
u(k,:)5[unew,u(k,1)];
end
y(i)5c*x(i);
end
16.36
DECIMATION BY POLYPHASE
DECOMPOSITION
% Program for computing convolution and m-fold decimation by
polyphase decomposition
function y5ppdec(x,h,M);
x5input(‘enter the input sequence5’);
h5input(‘enter the FIR filter coefficients5’);
M5input(‘enter the decimation factor5’);
1h5length(h); 1p5floor((1h21)/M)11;
p5reshape([reshape(h,1,1h),zeros(1,1p*M21h)],M,1p);
lx5length(x); ly5floor ((1x11h22)/M)11;
1u5foor((1x1M22)/M)11; %length of decimated sequences
u5[zeros(1,M21),reshape(x,1,1x),zeros(1,M*lu2lx2M11)];
y5zeros(1,1u11p21);
for m51:M,y5y1conv(u(m,: ),p(m,: )); end
y5y(1:1y);
16.37 MULTIBAND FIR FILTER DESIGN
% Program for the design of multiband FIR filters
function h5firdes(N,spec,win);
N5input(‘enter the length of the filter5’);
84. 898 Digital Signal Processing
spec5input(‘enter the low,high cutoff frequencies and
gain5’);
win5input(‘enter the window length5’);
flag5rem(N,2);
[K,m]5size(spec);
n5(0:N)2N/2;
if (˜flag),n(N/211)51;
end,h5zeros(1,N11);
for k51:K
temp5(spec (k,3)/pi)*(sin(spec(k,2)*n)2sin(spec(k,1)
*n))./n;
if (˜flag);temp(N/211)5spec(k,3)*(spec(k,2)2
spec(k,1))/pi;
end
h5h1temp;
end
if (nargin553),
h5h.*reshape(win,1,N11);
end
16.38 ANALYSIS FILTER BANK
% Program for maximally decimated uniform DFT analysis filter
bank
function u5dftanal(x,g,M);
g5input(‘enter the filter coefficient5’);
x5input(‘enter the input sequence5’);
M5input(‘enter the decimation factor5’);
1g5length(g); 1p5floor((1g21)/M)11;
p5reshape([reshape(g,1,1g),zeros(1,1p*M21g)],M,1p);
lx5length(x); lu5floor ((1x1M22)/M)11;
x5[zeros(1,M21),reshape(x,1,1x),zeros(1,M*lu2lx2M11)];
x5flipud(reshape(x,M,1u)); %the decimated sequences
u5[];
for m51:M,u5[u; cov(x(m,:),p(m,:))]; end
u5ifft(u);
16.39 SYNTHESIS FILTER BANK
% Program for maximally decimated uniform DFT synthesis filter
bank
function y5udftsynth(v,h,M);
1h5length(h); ‘1q5floor((1h21)/M)11;
q5flipud(reshape([reshape(h,1,1h),zeros(1,1q*M21h)],M,1q));
85. MATLAB Programs 899
v5fft(v);
y5[ ];
for m51:M,y5[conv(v(m,:),q(m,:));y]; end
y5y(:).’;
16.40 LEVINSON-DURBIN ALGORITHM
% Program for the solution of normal equations using Levinson-
Durbin algorithm
function [a,rho,s]5levdur(kappa);
% Input;
% kappa: covariance sequence values from 0 to p
% Output parameters:
% a: AR polynomial,with leading entry 1
% rho set of p reflection coefficients
% s: innovation variance
kappa5input(‘enter the covariance sequence5’);
p5length(kappa)21;
kappa5reshape(kappa,p11,1);
a51; s5kappa(1); rho5[];
for i51:p,
rhoi5(a*kappa(i11:21:2))/s; rho5[rho,rhoi];
s5s*(12rhoi^2);
a5[a,0]; a5a2rhoi*fliplr(a);
end
16.41 WIENER EQUATION’S SOLUTION
% Program
function b5wiener(kappax,kappayx);
kappax5input(‘enter the covariance sequence5’);
kappyx5input(‘enter the joint covariance sequence5’);
q5length(kappax)21;
kappax5reshape(kappax,q11,1);
kappayx5reshape(kappayx,q11,1);
b5(toeplitz(kappax)/(kappayx)’;
16.42 SHORT-TIME SPECTRAL ANALYSIS
% Program
function X5stsa(x,N,K,L,w,opt,M,theta0,dtheta);
x5input(‘enter the input signal5’); L5input(‘enter the
number consecutive DFTs to average5’);
N5input(‘enter the segment length5’); K5input(‘enter
the number of overlapping points5’); w5input(‘enter
86. 900 Digital Signal Processing
the window coefficients5’); opt5input(‘opt5’);
M5input(‘enter the length of DFT5’);
theta05input(‘theta05’); dtheta5input(‘dtheta5’);
1x5length(x); nsec5ceil((1x2N)/(N2K)11;
x5[reshape(x,1,1x),zeros(1,N1(nsec21)*(N2K))2lx)];
nout5N; if (nargin 5),nout5M; else,opt5‘n’; end
X5zeros(nsec,nout);
for n51: nsec,
temp5w.*x((n21)*(N2K)11:(n21)*(N2K)1N);
if (opt(1) 55 ‘z’),temp5[temp,zeros(1,M2N)]; end
if (opt(1)55‘c’),temp5chirpf (temp,theta0,dtheta,M);
else,temp5fftshift(fft(temp)); end
X(n,: )5abs(temp).^2;
end
if(L1);
nsecL5floor(nsec/L);
for n51:nsecL,X(n,:)5mean (X((n21)*L11:n*L,:)); end
if (nsec55nsecL*L11),
X(nsecL11,:)5X(nsecL*L11,:); X5X(1:nsecL11),: );
elseif(nsec nsecL*L),
X(nsecL11,:)5mean(x(nsecL*L11:nsec,:));
X5X(1:nsecL11,:);
else,X5X(1:nsecL,:); end
end
LKh
16.43
CANCELLATION OF ECHO PRODUCED ON
THE TELEPHONE-BASE BAND CHANNEL
Echo
Canceler
Echo
path
Estimated
sequence
Desired
sequence
Base band
transmit
filter
Fig. 16.44 Baseband Channel Echo Canceler
% Simulation program for baseband echo cancellation
shown in Fig. 16.44 using LMS algorithm
clc; close all; clear all;
format short
T5input(‘Enter the symbol interval’);
br5input(‘Enter the bit rate value’);
rf5input(‘Enter the roll off factor’);
n5[210 10];
y55000*rcosfir(rf,n,br,T); %Transmit filter pulse shape
is assumed as raised cosine