The software described in this document is furnished under a license agreement. The software may be used
or copied only under the terms of the license agreement. No part of this manual may be photocopied or
reproduced in any form without prior written consent from The MathW orks, Inc.
FEDERAL ACQUISITION: This provision applies to all acquisitions of the Program and Documentation
by, for, or through the federal government of the United States. By accepting delivery of the Program
or Documentation, the government hereby agrees that this software or documentation qualifies as
commercial computer software or commercial computer software documentation as such terms are used
or defined in FAR 12.212, DFARS Part 227.72, and DFARS 252.227-7014. Accordingly, the terms and
conditions of this Agreement and only those rights specified in this Agreement, shall pertain to and govern
theuse,modification,reproduction,release,performance,display,anddisclosureoftheProgramand
Documentation by the federal government (or other entity acquiring for or through the federal government)
and shall supersede any conflicting contractual terms or conditions. If this License fails to meet the
government’s needs or is inconsistent in any respect with federal procurement law, the government agrees
to return the Program and Docu mentation, unused, to The MathWorks, Inc.
Trademarks
MATLAB and Simulink are registered trademarks of The MathWorks, Inc. See
www.mathworks.com/trademarks for a list of additional trademarks. Other product or brand
names may be trademarks or registered trademarks of their respective holders.
Patents
The MathWorks products are protected by one or more U.S. patents. Please see
www.mathworks.com/patents for more information.
Revision History
September 2006 First printingNew for Version 6.6 (Release 2006b)
March 2007Online onlyRevised for Version 6.7 (Release 2007a)
September 2007 Online onlyRevised for Version 6.8 (Release 2007b)
March 2008Online onlyRevised for Version 6.9 (Release 2008a)
October 2008Online onlyRevised for Version 6.10 (Release 2008b)
March 2009Online onlyRevised for Version 6.11 (Release 2009a)
September 2009 Online onlyRevised for Version 6.12 (Release 2009b)
March 2010Online onlyRevised for Version 6.13 (Release 2010a)
1
Product Overvi
Product Summa
Command-Line
Graphical Us
Supported Da
ew
.................................
ry
.................................
Functions and Objects
er Interfaces
ta Types
...........................
.............................
Overview
................
Contents
1-2
1-2
1-2
1-3
1-3
Central Fea
Signal Proc
Signals and
Filter Des
Linear Sys
Windowing
Spectral
Transfor
Statisti
Paramet
Linear P
Multira
Wavefor
Other O
Using the set command to Set Property Values .........5-8
Using Options Objects to Set Property Values
.......... 5-11
Measuring Signal Power
........................... 5-13
Index
viiiContents
Overview
• “Product Overview” on page 1-2
• “Central Features” on p age 1-4
• “Interactive Tools” on page 1-7
• “Extensibility” on page 1-8
• “Finding More Information” on page 1-9
1
1 Overview
Product Overview
Product Summary
Signal Processing Toolbo x™ software is a collection of tools based on the
MATLAB
processing operations, from waveform generation to filter design and
implementation, parametric modeling, and spectral analysis. The toolbox
provides two categories of tools, command-line functions/objects and graphical
user interfaces:
In this section...
“Product Summary” on page 1-2
“Command-Line Functions and Objects” on page 1-2
“Graphical User Interfaces” on page 1-3
“Supported Data Types” on page 1-3
®
environment. The toolbox supports a wide range of signal
1-2
Command-Line Functions and Objects
Command-line functions and objects are available in the following categories:
• Discrete-time filter design, analysis, and implementation
• Analog filter design, analysis, and implementation
• Linear system transformations
• Windowing functions
• Spectral analysis and cepstral analysis
• Transforms
• Statistical signal processing
• Parametric modeling
• Linear prediction
• Multirate signal processing
• Waveform generation
Product Overview
Note For information on objects, see Object-Oriented Programming.
Graphical User Interfaces
A suite of interactive graphical user interfaces are available for
• Filter design and analysis
• Window design and analysis
• Signal plotting and analysis, spectral analysis, and filtering
Supported Data Types
The Signal Processing Toolbox software supports only double-precision
inputs. If you input single-precision floating-point or integer data, you should
not expect to receive correct results, and in many cases, an error will occur.
The Filter Design Toolbox™ product, i n conjunction with the Fixed-Point
Toolbox™ product, enables single-precision floating-point and fixed-point
support for filtering and filter design.
1-3
1 Overview
Central Features
In this section...
“Signal Processing T oolbox Functions” on page 1-4
“Signals and Systems” on page 1-4
“Filter Design, Analysis, and Implementation” on page 1-5
“Linear System Transformations” on page 1-5
“Windowing Functions” on page 1-5
“Spectral Analysis” on page 1-5
“Transforms” on page 1-5
“Statistical Signal Processing” on page 1-5
“Parametric Modeling” on page 1-6
“Linear Prediction” on page 1-6
“Multirate Signal Processing” on page 1-6
1-4
“Waveform Generation” on page 1-6
“Other Operations” on page 1-6
Signal Processing Toolbox Functions
Signal Processing Toolbox functions are algorithms that implement a variety
of signal processing tasks. These toolbox functions are a specialized extension
of the MATLAB computational and graphical environment.
Signals and Systems
The basic entities that toolbox functions work with are signals and systems.
The functions emphasize digital (or discrete) signals and filters, as opposed to
analog (or continuous) signals. The principal filter type the toolbox supports is
the linear, time-invariant digital filter with a single input and a single output.
You can represent linear time-invariant systems using one of several models
(such as transfer function, state-space, zero-pole-gain, and seco n d-order
section), and you can conv ert between representations.
Central Features
Filter Design, A
Signal Processi
design. The majo
IIR filter desi
analog filter p
ng Toolbox software provides customizable support for filter
gn, analysis, and implementation, filter order estimation, and
rototyping and transformations.
Linear System
The toolbox h
to and from se
and transfer
as a number of transformation functions, including conversions
cond-order sections, state-space, pole-zero, lattice or ladder,
functions.
Windowing F
The toolbo
graphical
using thes
Spectral
Toolbox
mean-sq
nonpara
in the to
period
comput
one-si
spect
xprovidesmanycommonlyusedwindowfunctionsaswellas
user interfaces to view and compare windows and design filters
ewindows.
Analysis
functions are available for estimating the power spectral density,
uare spectral estimate, and pseudo spectrum, using parametric and
metric techniques. Som e of the spectral analysis methods in cluded
olbox are Burg, covariance, eigenvector, Thomson multitaper,
ogram, Welch, and Yule-Walker. Other functions are available for
ing the average power of a power spectral density, computing a
ded spectrum, and shifting the DC component to the center of a
rum.
nalysis, and Implementation
r filter design functions included in the toolbox are FIR and
Transformations
unctions
Trans
The t
the F
Sta
The
cov
forms
oolbox includes a variety of transforms a nd inverse transforms, including
ourier, chirp-Z, discrete cosine, Goertzel, Hilbert, and Walsh-Hadamard.
tistical Signal Processing
toolbox has functions for computing correlation, cross-correlation,
ariance, and autocorrelation.
1-5
1 Overview
Parametric Mode
The toolbox incl
Burg, covarianc
The toolbox als
or discrete-ti
Linear Predic
The toolbox h
converting b
coefficient
Multirate S
The toolbo
including
interpola
tion.
Waveform
The tool
wavefor
monopul
voltage
Sinuso
box has functions to generate many types of periodic and aperiodic
ms, including chirp, Dirichlet function, Gaussian RF pulse, Gaussian
se, pulse train, rectangle, sawtooth, sinc, square wave, triangle, and
-controlled oscillator. See “Waveform G eneration: Time Vectors and
ids” on page 2-4 for more information.
udes these methods for autoregressive parametric modeling:
e, Yule-Walker, and Steiglitz-McBride (for ARMA modeling).
o has functions for fitting a frequency response to an analog
me filter.
tion
as functions for computing linear prediction coefficients and for
etween autorcorrelations and prediction polynomials, reflection
s, and line spectral frequencies.
ignal Processing
x includes a number of functions for multirate signal processing,
decimation, up- and downsampling, resampling, and spline
Generation
ling
1-6
Other O
A numb
are ce
us plotting methods.
vario
perations
er of other operations are also available in the toolbox. Some of these
pstral analysis, modulation, demodulation, Slepian sequences, and
Interactive Tools
The power of Signal Processing Toolbox software is greatly enhanced by its
easy-to-use interactive tools.
Interactive Tools
• The Filter Design and Analysis Tool (
a comprehensive collection of features for addressing filter design. Both
FDAtool and filterbuilder offer seamless access to the additional filter
design methods, quantization features, C-code generation and other
enhanced filtering features of the Filter Design Toolbox product when
that product is installed. If you have the Filter D esign HDL Coder™
product installed, you can also generate HDL code from both FDATool
and filterbuidler.
• The Filter Visualization Tool (
for viewing, annotating, and printing filter response plots.
• The Signal Processing Tool (
for signal viewing, filter design, and spectral analysis.
• The Window Design and Analysis Tool (
for designing and comparing spectral windows.
• The Window Visualization Tool (
for viewing, annotating, and printing window plots.
fvtool) provides a graphical environment
sptool) provides a rich graphical environment
fdatool)andfil terb uilder provide
wintool)providesanenvironment
wvtool) provides a graphical environment
1-7
1 Overview
Extensibility
In this section...
“Expanding the Toolbox” on page 1-8
“Expanding the Toolbox with Other Toolboxes” on page 1-8
Expanding the Toolbox
One of the most important features of the MATLAB environment is that it is
extensible. MATLAB lets you create your own programs for research, design,
or engineering of signal processing systems. Simply copy the files provided
with the Signal Processing Toolbox product and modify them as needed, or
create new functions to expand the functionality of the toolbox.
Expanding the Toolbox with Other Toolboxes
A number of other MATLAB products expand and enhance the Signal
Processing Toolbox product. These include:
1-8
• Filter Design Too lbox — Toolbox for advanced filter design
• Signal Processing Blockset™ — Product based on Simulink
and analyzing signal processing models
• Fixed-Point Toolbox — Toolbox for using fixed-point arithmetic
• Filter Design HDL Coder — Toolbox for creating and exporting HDL code
• Embedded IDE Link™ — Toolbox for working with embedded software on
Texas Instruments™ DSPs
®
for creating
Finding More Information
This Getting Started guide provides an introduction to Signal Processing
Toolbox software and examples, which give you a quick start at using some
of the commands a nd graphical user interfaces. It is assumed that you have
basic knowledge and understanding of signals and systems, including such
topics as filter and linear system theory and basic Fourier analysis.
More detailed and a dvanced information on using the toolbox is available in
theonlinehelpsystembytyping
viewing the documentation on the MathWorks Web site (
The toolbox also includes a number of introductory and advanced demos
which you can access by typing
Finding More Information
doc at the MATLAB command line or by
www.mathworks.com).
demos at the MATLA B command line.
1-9
1 Overview
1-10
BasicSignalProcessing
Concepts
• “Representing Signals” on page 2-2
• “Waveform Generation: Time Vectors and Sinusoids” on page 2-4
• “Working with Data” on page 2-12
• “Selected Bibliography” on page 2-14
2
2 Basic Signal Processing Concepts
Representing Signals
In this section...
“Numeric Arrays” on page 2-2
“Vector Representation” on page 2-2
Numeric Arrays
The central data construct in the MATLAB environment is the numeric
array, an ordered collection of real or complex numeric data with two or more
dimensions. The basic data objects of signal processing (one-dimensional
signals or sequences, multichannel signals, and two-dimensional signals) are
all naturally suited to array representation.
Vector Representation
MATLAB represents ordinary one-dim ensio n al sampled data signals, or
sequences, as vectors.Vectorsare1-by-n or n-by-1 arrays, where n is the
number of samples in the sequence. One way to introduce a sequence is to
enter it as a list of elements at the command prompt. The statement
2-2
x = [4 3 7 -9 1];
creates a simple five-element real sequence in a row vector. Transposition
turns the sequence into a column vector
x=x';
resulting in
x=
4
3
7
-9
1
Column orientation is preferable for single channel signals becau se it e xten ds
naturally to the multichannel case. For multichannel data, each column of a
Representing Signals
matrix represents one channel. Each row of such a matrix then corresponds
to a sample point. A three-channel signal that consists of
y = [x 2*x x/pi]
x, 2x,andx/π is
This results in
y=
4.00008.00001.2732
3.00006.00000.9549
7.000014.00002.2282
-9.0000-18.0000-2 .864 8
1.00002.00000.3183
If the sequence has complex-valued elements, the transpose operator takes
theconjugateofthesequenceelements. Totransformacomplex-valued
row vector into a column vector without taking conjugates, use the
.' or
non-conjugate transpose:
x=[1-i 3+i 2+3*i 4-2*i]; %1X4
x=x.'; %4X1
2-3
2 Basic Signal Processing Concepts
Waveform Generation: Time Vectors and Sinusoids
In this section...
“Time Vectors” o n page 2-4
“Common Sequences: Unit Impulse, Unit Step, and Unit Ramp” on page 2-5
“Multichannel Signals” on page 2-5
“Common Periodic Waveforms” on page 2 -6
“Common Aperiodic Waveforms” on page 2-7
“The pulstran Function” on page 2-8
“The Sinc Function” on page 2 -9
“The Dirichlet Function” on page 2-10
Time Vectors
Most toolbox functions require you to begin with a vector representing a
time base. Consider generating data with a 1000 Hz sample frequency, for
example. An appropriate time vector is
2-4
t = (0:0.001:1)';
where the MATLAB colon operator creates a 1001-ele m ent row vector that
represents time running from 0 to 1 s in steps of 1 ms. The transpose operator
(') changes the row vector into a column; the semicolon (;)tellsMATLABto
compute, but not display the result.
Given
50 Hz and one at 120 Hz with twice the amplitude.
The new variable y,formedfromvectort,isalso1001elementslong. You
can add normally distributed white noise to the signal and plot the first 50
points using
t, you can create a sample signal y consisting of two sinusoids, one at
y = sin(2*pi*50*t) + 2*si n(2* pi*120*t);
randn('state',0);
yn = y + 0.5*randn(size(t));
plot(t(1:50),yn(1:50))
Waveform Generation: Time Vectors and Sinusoids
Common Sequences: Unit I mpulse, Unit Step, and
Unit Ramp
Since MATLAB is a programming language, an endless variety of different
signals is possible. Here are some statements that generate several commonly
used sequences, including the unit impulse, unit step, and unit ramp
functions:
t = (0:0.001:1)';
imp= [1; zeros(99,1)];% Impulse
unit_step = ones(100,1);% Step (with 0 initial cond.)
ramp_sig= t;% Ramp
quad_sig=t.^2;% Quadratic
sq_wave = square(4*pi*t);% Square wave with period 0.5
All of these sequences are column vectors.Thelastthreeinherittheirshapes
from
t.
Multichannel Signals
Use standard MATLAB array syntax to work with multichannel signals. For
example, a multichannel signal consisting of the last three signals generated
above is
2-5
2 Basic Signal Processing Concepts
z = [ramp_sig quad_sig sq_wave];
You can generate a multichannel unit sample function using the outer product
operator. For example, a six-element column vector whose first element is
one, and whose remaining five elements are zeros, is
a = [1 zeros(1,5)]';
To duplicate column vector a into a matrix without performing any
multiplication, use the MATLAB
c = a(:,ones(1,3));
Common Periodic Waveforms
The toolbox provides functions for generating widely used periodic waveforms:
•
sawtooth generates a sawtooth wave with peaks at ±1 and a period of
2π.Anoptional
which the signal’s maximum occurs.
colon operator and the ones function:
width parameter specifies a fractional multiple of 2π at
2-6
•
square generates a square wave with a period of 2π. An optional parameter
specifies duty cycle, the percent of the period for which the sig n al is positive.
Togenerate1.5sofa50Hzsawtoothwavewithasamplerateof10kHzand
plot 0.2 s of the generated waveform, use
fs = 10000;
t = 0:1/fs:1.5;
x = sawtooth(2*pi*50*t);
plot(t,x), axis([0 0.2 -1 1])
Waveform Generation: Time Vectors and Sinusoids
Common Aperiodic Waveforms
The toolbox also provides functions for generating several widely used
aperiodic waveforms:
•
gauspuls generates a Gaussian-modulated sinusoidal pulse with a
specified time, center frequency, and fractional bandwidth. Optional
parameters return in-phase and quadrature pulses, the RF signal envelope,
and the cutoff time for the trailing pulse envelope.
•
chirp generates a linear, log, or quadratic swept-frequency cosine signal.
An optional parameter specifies alternative sweep methods. An optional
parameter
phi allows initial phase to be specified in degrees.
To compute 2 s of a linear chirp signal with a sample rate of 1 kHz, that starts
at DC and crosses 150 Hz at 1 s, use
t = 0:1/1000:2;
y = chirp(t,0,1,150);
To plot the spectrogram, use
spectrogram(y,256,250,256,1000,'yaxis')
2-7
2 Basic Signal Processing Concepts
The pulstr
The pulst
sampled p
consisti
The pulse
length o
to each p
repetit
the
specif
ng of the sum of multiple delayed interpolations of a Gaussian pulse.
ion in column 2. The pulse train is constructed by passing the name of
spuls
gau
y a 10 kHz Gaussian pulse with 50% bandwidth:
T = 0:1/50E3:10E-3;
D = [0:1/1E3:10E-3;0.8.^(0:10)]';
Y = pulstran(T,D,'gauspuls',10E3,0.5);
plot(T,Y)
an Function
ran
function generates pulse trains from either continuous or
rototype pulses. The following example generates a pulse train
train is defined to have a sample rate of 50 kHz, a pulse train
f 10 ms, and a pulse repetition rate of 1 kHz;
ulse repetition in column 1 and an optional attenuation for each
function to pulstran, along with additional parameters that
D specifies the delay
2-8
Waveform Generation: Time Vectors and Sinusoids
The Sinc Function
The sinc function computes the mathematical sinc function for an input
vector or matrix
the inverse Fourier transform of the rectangular pulse in frequency centered
at zero of width 2π and he ight 1. The following equation defines the sinc
function:
x. Viewed as a function of time, or space, the sinc function is
sin()
x
x
The sinc function has a value of 1 whenx is equal to zero, and a value of
sin()
x
x
forallotherelementsofx.
To plot the sinc function for a linearly spaced vector with values ranging from
-5 to 5, use the following commands:
x = linspace(-5,5);
1
=
2
∫
−
ix
ed
.
2-9
2 Basic Signal Processing Concepts
y = sinc(x);
plot(x,y)
2-10
The Dirichlet Function
The toolbox function diric computes the Dirichlet function, sometimes called
the periodic sinc or aliased sinc function, for an input vector or matrix
Dirichlet function is
sin(/ )
Nx
2
sin( / )
(
kN
2
−
1))
xkk
,,,,,...
≠=±±±
20123
,,,,,...xkk==±±±
20123
diric( )
x
⎧
⎪
Nx
=
⎨
⎪
()
−
1
⎩
where N is a user-specified positive integer. For N odd, the Dirichlet function
has a period of 2π;forN even, its period is 4π. The magnitude of this function
is (1/N) times the magnitude of the discrete-time Fourier transform of the
N-point rectangular window.
To plot the Dirichle t function over the range 0 to 4π for
• By direct input, that is, entering the data manually at the keyboard
• By using a MATLAB or toolbox function, such as
square,orsinc
sin, cos, sawtooth,
Importing Data from Outside the MATLAB
Environment
Some applications, however, may need to import data from outside MATLAB.
Depending on your data format, you can do this in the following ways:
• Load data from an ASCII file or MAT-file with the MATLAB
command.
• Read the data into MATLAB with a low-level file I/O function, such as
fopen, fread,andfscanf.
• Develop a MEX-file to read the data.
load
Converting Data into a MAT-File
Other resources are also useful, such as a high-level language program (in
Fortran or C, for example) that conv erts your data into MAT-file format.
See the “Manually Converting Data Passed to Functions” documentation for
details. MATLAB reads such files using the
load command.
2-12
Working with Data
Exporting Data
Similar techniques are available for exporting data generated within
MATLAB. See the “Importing and Exporting Data” documentation for more
details.
Data Precision
All Signal Processing Toolbox functions accept double-precision inputs. If you
input single-precision floating-point or integer data types, you should not
expect to receive correct results and in many cases, an error will occur. Filter
Design Toolbox and Fixed-Point Toolbox products enable single-precision
floating-point and fixed-point support for most
dfilt structures.
2-13
2 Basic Signal Processing Concepts
Selected Bibliography
Algorithm development for Signal Processing Toolbox functions has drawn
heavily upon the references listed below. All are recommended to the
interested reader who needs to know more about signal processing than is
covered in this manual.
[1] Crochiere, R.E., and L.R. Rabiner. Multi-Rate Signal Processing.
Englewood Cliffs, NJ: Prentice Hall, 1 98 3 . pp. 88-91.
[2] IEEE. Programs for Digital Signal Processing. IEEE Press. New York:
John Wiley & Sons, 1979.
[3] Jackson, L.B. Digital Filters and Signal Processing.ThirdEd.Boston:
Kluwer Academic Publishers, 1989.
[5] Op penheim, A.V., and R.W. Schafer. Discrete-Time Signal Processing.
Englewood Cliffs, NJ: Prentice Hall, 1989.
[6] Parks, T.W., and C.S. Burrus. Digital Filter Design. New York: John
Wiley & Sons, 1987.
[7] P erci va l, D.B., and A .T. Walden. Spectral Analysis for PhysicalApplications: Multitaper and Conventional Univariate Techniques.
Cambridge: Cambridge University Press, 1993.
[8] Pratt,W.K. D igital Image Processing. New York: John Wiley & Sons, 1991.
[9] Proakis, J.G., and D.G. Manolakis. Digital Signal Processing: Principles,Algorithms, and Applications. Upper Saddle River, NJ: Prentice Hall, 1996.
[10] Rabiner, L.R., and B. Gold. Theory and Application of Digital SignalProcessing. Englewood Cliffs, NJ: Prentice Hall, 1975.
[11] Welch, P.D. “The Use of Fast Fourier Transform for the Estimation of
Power Spectra: A Method Based on Time Averaging Over Short, Modified
Selected Bibliography
Periodograms.” IEEE Trans. A udio Electroacoust.Vol.AU-15(June1967).
Pgs. 70-73.
2-15
2 Basic Signal Processing Concepts
2-16
3
Filter Design with Fdesign
and Filterbuilder
• “Filter Design Process Overview” on page 3-2
• “Basic Filter Design Process” on page 3-4
• “Using Filterbuilder to Design a Filter” on page 3-9
3 Filter Design with Fdesign and Filterbuilder
Filter Design Process Overview
Note You must have the Signal Processing Toolbox installed to use fdesign
and fil terb uilder. A dvanced capabilities are available if your installation
additionally includes the Filter Design Toolbox license. You can verify the
presence of both toolboxes by typing
Filter design through user-defined specifications is the core of the fdesign
approach. This specification-centric approach places less emphasis on the
choice of specific filter algorithms, and more emphasis on performance during
the design a good working filter. For example, you can take a given set of
design parameters for the filter, such as a stopband frequency, a passband
frequency, and a stopband attenuation, and— using these parameters—
design a specification object for the filter. You can then implement the filter
using this specification object. Using this approach, it is also possible to
compare different algorithms as applied to a set of specifications.
ver at the command prompt.
3-2
There are two distinct objects involved in filter design:
• Specification Object — Captures the required design parameters of a filter
• Implementation Object — Describes the designed filter; includes the array
of coefficients and the filter structure
The distinction between these two objects is at the core of the filter design
methodology. The basic attributes of each of these objects are outlined in the
following table.
fication Objec t
Speci
-level specification
High
rithmic properties
Algo
You can run the code in the following examples from the Help browser (select
the code, right-click the selection, and choose Evaluate Selection from the
context menu), or you can enter the code on the MATLAB command line.
Before you begin this example, start MATLAB and verify that you have
installed the Signal Processing Toolbox software. If you wish to access the
Implementation Object
er coefficients
Filt
Filter structure
Filter Design Process Overview
full functionality of fdesign and filterbuilder, you should additionally
obtain the Filter Des ign Toolbox software. You can verify the presence of
these products by typing
ver at the command prompt.
3-3
3 Filter Design with Fdesign and Filterbuilder
Basic Filter Design Process
Use the following two steps to design a simple filter.
1 Create a filter specification object.
2 Design your filter.
Example — Design a Filter in Two Steps
Assume that you want to design a bandpass filter. Typically a bandpass filter
is defined as shown in the following figure.
3-4
In this example, a sampling frequency of Fs = 48 kHz is used. This bandpass
filter has the following specifications, specified here using MATLAB code:
A_stop1 = 60;% Attenuation in the first stopband = 60 dB
F_stop1 = 8400;% Edge of the stopband = 8400 Hz
F_pass1 = 10800; % Edge of the passband = 10800 Hz
F_pass2 = 15600; % Closing edge of the passband = 15600 Hz
F_stop2 = 18000; % Edge of the second stopband = 18000 Hz
A_stop2 = 60;% Attenuation in the second stopband = 6 0 dB
A_pass = 1;% Amount of ripple allowed in t he passband = 1 dB
In the followin g two steps, these spe c if ica t ion s are passed to the
fdesign.bandpass method as parameters.
Basic Filter Design Process
Step 1
To create a filter specification object, evaluate the following code at
the MATLAB prompt:
d = fdesign.bandpass
Now, pass the filter specifications that correspond to the default
Specification — fst1,fp1,fp2,fst2,ast1 ,ap,ast2.Thisexampleadds
fs as the final input argument to specify the sampling frequency of
Note The order of the filter is not specified, allowing a degree of
freedom for the algorithm design in order to achieve the specification.
The design will be a minimum order design.
The specification parameters, such as Fstop1,areallgivendefault
values when none are provided. You can change the values of the
specification parameters after the filter specification object has been
created. For example, if there are two values that need to be changed,
Fpass2 and Fstop2,usetheset command, which takes the object first,
and then the parameter value pairs. Evaluate the following code at
the MATLAB prompt:
Note If you do not specify a design method, a default method will be
used. For example, you can execute the command
>> BandPassFilt = design( BandPassSpecObj)
BandPassFilt =
FilterStructure: 'Direct-Form FIR'
Arithmetic: 'double'
Numerator: [1x44 double]
PersistentMemory: false
and a design method will be selected automatically.
To check your work, you can plot the filter magnitude response using the
Filter Visualization tool. Verify that all the design parameters are met:
>> fvtool(BandPassFilt) %plot the fil ter magnitude response
If you have the Filter Design Toolbox installed, the Filter Visualization
tool produces the following figure with the dashed red lines indicating
the transition bands and unity gain (0 in dB) over the passband. If
you do not have the Filter Design Toolbox,thefigureappearswithout
the dashed red lines.
3-7
3 Filter Design with Fdesign and Filterbuilder
With only the Signal Processing Toolbox software installed:
3-8
Using Filterbuilder to Design a Filter
Filterbuilder presents the option of designing a filter using a GUI dialog box
as opposed to the command line instructions. You can use Filterbuilder to
design the same bandpass filter designed in the previous section, “Basic Filter
Design Process” on page 3-4
Example — Using Filterbuilder to Design a Simple Filter
To design the filter using FilterBuilder:
1 Type the following at the MATLA B prompt:
filterbuilder
The dialog box using the Filter Design Toolbox software appears a s follows:
Using Filterbuilder to Design a Filter
The dialog box using only the Signal Processing Toolbox software appears
as follows:
3-9
3 Filter Design with Fdesign and Filterbuilder
2 Select Bandpass filter response from the list in the dialog box, and hit the
OK button. The following dialog box opens:
3-10
Using Filterbuilder to Design a Filter
3 Enter the correct frequencies for Fpass2 and Fstop2,asshowninthe
preceding figure, then click OK. Here the specification uses normalized
frequency, so that the passband and stopband edges are expressed as a
fraction of the Nyquist frequency (in this case, 48/2 kHz). The following
message appears at the MATLAB prompt:
The variable 'Hbp' has be en exported to the command window.
IfyoudisplaytheWorkspacetab,asshowninthefollowingfigure,yousee
the object
Hbp has been placed on your workspace.
3-11
3 Filter Design with Fdesign and Filterbuilder
4 To check your work, plot the filter magnitude response using the Filter
Visualization tool. Verify that all the design parameters are met:
fvtool(Hbp) %plot the fil ter magnitude response
3-12
Note that the dashed red line s on the preced ing figure will only appear if
you are using the Filter Design Toolbox software.
FilterDesignwiththe
FDATool GUI
• “Introduction” on page 4-2
• “Designing the Filter” on page 4-3
• “Analyzing the Filter” on page 4-8
• “Designing Additional Filters” on page 4-10
• “Viewing and Annotating the Filter” on page 4-11
4
• “Exporting Filters from FDATool” on page 4-17
• “Designing Filters using Command Line Functions” on page 4-21
• “Where to Find More Information” on page 4-24
4 Filter Design with the FDATool GUI
Introduction
This section describes how to graphically design and implement digital filters
using the Signal Processing Toolbox FDATool GUI. Filter design is the process
of creating the filter coefficients to meet specific frequency specifications.
Filter implementation involves choosing and applying a particular filter
structure to those coefficients. Only after both design and implementation
have been performed can your data be filtered.
This section includes a brief discussion o f applying the completed filter design
and filter implementation using MATLAB command line functions, such as
filter.
For an interactive FDATool demo, type
line, and select Toolboxes. Expand the tree, scroll down, and select Signal
Processing Toolbox. Under Filter Design and Analysis, click Introduction
to Filter Design and Analysis Tool.
demos at the MATLAB command
4-2
Designing the Filter
This section is a step-by-step introduction to using the Filter Design and
Analysis Tool (FDAToo l) to design an octave-band filter. An octave is the
interval between two frequencies having a ratio of 2:1. An octave-band
filter is a bandpass filter with high cutoff frequency approximately twice
that of the low cutoff frequency. The class of an octave filter is determined
by its allowable passband ripple and its stopband attenuation. Refer to the
ANSI S1.11–2004 standard for more information. For more information
on designing filters, see “FDATool: A Filter Design and Analysis GUI” in
the Signal Processin g Toolbox User’s Guide. (N o te that you ca n also access
FDATool from SPTool).
1 Start FDATool from the M AT LAB command line.
fdatool
The FDATool dialog opens with a default filter. Its filter information is
summarized in the upper left (Current Filter Information) and its filter
specifications are depicted in the upper right. In addition to displaying
filter specification, this upper right pane di splays fi lter responses and filter
coefficients.
Designing the Filter
4-3
4 Filter Design with the FDATool GUI
The bottom half of FDATool shows the Filter Design panel, where you
specify the filter parameters. Other panels, such as Import filter from
workspace and Pole/Zero Editor, which you access with the buttons on
the lower left, are also displayed in this area. If you have other products
installed, you may see additional buttons.
Note that w h en you open FDATool, Design Filter is not enabled. You
must make a change to the default filter design in order to enable DesignFilter.Thisistrueeachtimeyouwanttochangethefilterdesign. Changes
to radio button items or drop down menu items such as those under
Response Type or Filter Order enable Design Filter immediately.
Changes to specifications in text boxes such as Fs, Fpass,andFstop
require you to click outside the text b ox to enable Design Filter.
2 In the Response Type pane, select Bandpass.
3 In the Design Method pane, select IIR,andthenselectButte rwo rth
from the selection list.
4-4
4 For the Filter Order, select Specify order, and then enter 6.
5 Set the Frequency Specifications as follows:
ParameterSettingDescription
Units
Fs
Fc1
Hz
48000
22
Units for the parameters
Sampling frequency
First cutoff frequency (i.e., the
frequency preceding the passband at
which the magnitude response is 3 dB
below the passband gain)
Fc2
45
Second cutoff frequency (i.e., the
frequency following the passband at
which the magnitude response is 3 dB
below the passband gain)
Designing the Filter
6 After specifying the filter design parameters, click the Design Filter
button at the bottom of the design panel to compute the filter coefficients.
The display u pdates t o show the magnitude response of the designed filter.
4-5
4 Filter Design with the FDATool GUI
Notice that the Design Filter button is disabled after you compute the
coefficients for your filter design. This button is enabled again if you make
any changes to the filter specifications.
7 Click the Store Filter button.
4-6
8 In the Store Filter dialog, change the filter name to Bandpass
Butterworth-1
and click OK to save the filter in the Filter Manager.
Designing the Filter
‘
4-7
4 Filter Design with the FDATool GUI
Analyzing the Filter
After designing the filter, you can view the following filter responses in the
display region by clicking on the associated toolbar button or by selecting the
desired response from the Analysis menu.
ResponseToolbar Button Image
Filter specifications
Magnitude response
Phase response
Magnitude
Group delay
Phase delay
Impulse response
Step response
Pole-zero plot
Filter
Filter information
Note Other analyses are available if you have the Filter Design Toolbox
product installed.
1 Examine the displayed magnitude response of the filter.
and Phase responses
coefficients
4-8
Analyzing the Filter
2 Display other responses, as desired. Click the appropriate buttons, show n
in the table above or select the desired response from the Analysis menu.
3 Click the Filter coefficients button to display the filter coefficients.
4-9
4 Filter Design with the FDATool GUI
Designing Additional Filters
You have designed one of the bands of an octave filter bank. This section
shows you how to design and save the other nine bands. The following table
defines the parameters for the remaining bands. Note that all of the bands
use these parameters: Bandpass, IIR – Butterworth , order =
48000 Hz .
6, Fs =
Fc1
4589Bandpass Butterworth-2
89178Bandpass Butterworth-3
178355Bandpass Butterworth-4
355708Bandpass Butterworth-5
7081413Bandpass Butterworth-6
14132818Bandpass Butterworth-7
28185623Bandpass Butterworth-8
562311220Bandpass Butterworth-9
1122022387Bandpass Butterworth-10
1 Using the parameters listed in the table above, for each table row, set the
Fc2
Filter Nam e
appropriate the Fc1 and Fc2 values.
2 Design the filter by clicking the Design Filter button.
5 Repeat these steps until all 10 filters are designed and stored.
4-10
Viewing and Annotating the Filter
In this section...
“Viewing the Filter in FVTool” on page 4-11
“Using FVTool for Annotation” on page 4-15
Viewing the Filter in FVTool
This section teaches you how to use the Filter Visualization Tool (FVTool) to
view the octave-band filter. It also describes how to annotate your filter.
1 Click the Filter Manager button to display the Filter Manager, which
lists your saved filters.
Viewing and Annotating the Filter
2 Press Ctrl+click on each filter name to select all the filters, and then
click FVTool. FVTool opens with the filter responses overlaid f or easy
comparison. (If you want to view a single filter in FVTool, click the Full
4-11
4 Filter Design with the FDATool GUI
View Analysis button when that filter is shown in the FDATool display
panel or select View > Filter Visualization Tool).
3 Change the x-axis scale to logarithmic by selecting Analysis > Analysis
Parameters to display the A n alysis Parameters dialog.
4 Change the Frequency Scale to Log.
4-12
5 Click OK.
Viewing and Annotating the Filter
6 Click the Legend buttonto turn on the legend, which you can drag to
the desired location.
4-13
4 Filter Design with the FDATool GUI
4-14
7 Click the Legend button again to turn off the legend.
Use the Zoom button
passbands to zoom in.
and drag a rectangle a round the first few
Viewing and Annotating the Filter
8 Click the Restore Default View buttonto return to the full view.
9 Display other responses, as desired. (The FVTool Analysis toolbar buttons
and Analysis menu are the same as in FDATool. See “Analyzing the
Filter” on page 4-8 for descriptions of the buttons.
Using FVTool for Annotation
FVTool is also useful for doing further analysis, adding annotations, and
printing. Available annotations include adding rectangles, text boxes, arrows
and lines, and adding data tips.
For a demo about FVTool, type
and select Toolboxes. Expand the tree, scroll down, and select Signal
Processing Toolbox. Under Filter Design and Analysis, click Filter
Analysis using FVTool and its API.
demos at the MATLAB command line,
4-15
4 Filter Design with the FDATool GUI
Note Do not close F DATool a t this ti m e. You will use it in future sections.
1 Use the toolbar buttons to annotate your response plot. Add a line by
clicking one of the line buttons, and then use your mouse to draw the line
on your plot.
2 Add a data tip by clicking on a plot at the desired point. The data tip shows
the frequency and magnitude at that point.
4-16
3 Close FVTool by selecting File > Close.
Exporting Filters from FDATool
FDATool provides a simple way to create filter objects (dfilts) from your
filter designs. This is particularly useful for saving your filter design to the
MATLAB workspace for use with command line functions. You can also
save your filters to M-files using File > Generate M-file to run in scripts
or batch files.
1 In FDATool, click Filter Manager and highlight only the Bandpass
Butterworth-1
2 Select File > Export.
3 Set Export to to Workspace.SetExport as to Objects.InDiscrete
Filter type
an
Hd1 dfilt object in the w orkspace.
filter.
Hd1.ClickExport to export the first filter in your filter bank to
Exporting Filters from FDATool
eat steps 1 through 3 for each of the remaining nine filters. Highlight
4 Rep
h filter individually to make it the active filter and change the Discrete
eac
lter name to match the filter number. When you finish you will have
Fi
dfilt objects in the workspace.
10
4-17
4 Filter Design with the FDATool GUI
5 Close FDATool by selecting File > Close.
6 On the MATLAB command line, verify that your objects were exported by
using the
whos
Filtering with dfilt
1 Type the following on the MATLAB co mmand line to concatenate your
FilterStructure: 'Direct-Form II, Second-Order Sections'
sosMatrix: [3x6 double]
ScaleValues: [3.40097054256801e-009;1;1;1]
PersistentMemory: false
3 A number of methods can be used to view and manipulate the Hd1 dfilt
object. Try the
info(Hd1)% Displays filter information
Discrete-Time IIR Filter ( real)
info command:
Exporting Filters from FDATool
------------------------------Filter Structure: Direct-Form II, Second-Order Sections
Number of Sections: 3
Stable: Yes
Linear Phase: No
4 You can open FVTool from the MATLAB command line and specify display
parameters as follows.
F = fvtool(Hd,'Analysis','magnitude')% Open FVTool with
% magnitude display
set(F,'FrequencyScale','Log')% Chang e to log scale
This pro duces the same display as step 5 of “Viewing the Filter in FVTool”
on page 4-11 above.
5 Now using the MATLAB command line, create some discrete white
Gaussian noise data, which you can then filter using the filter bank.
rand;% Initialize random numbe r generator
Nx = 100000;% Number of noise data points
xw = randn(Nx,1);% Create white noise
for i=1:10,
yw(:,i)=filter(Hd(i),xw); % Filter the white n oise through
end% the entire filter bank.
% (:,i) means all rows of column i
6 Plot the filtered data.
plot(yw)
4-19
4 Filter Design with the FDATool GUI
4-20
Designing Filters using Command Line Functions
Designing Filters using Command Line Functions
Beginning with R2009a, users can specify and design filters at the command
line using
powerful and efficient way to specify and implement digital filters. With
fdesign and design, digital filter design is a two-step process. In the first
step, the user specifies the desired characteristics of the filter and saves those
specifications in a Filter Specification Object. In the second step, the user
implements the filter as a dfilt object, which can then be used to filter data.
As an example of this two-step process, we will design a lowpass filter for data
sampled at 20 kHz. The desired passband frequency is 1 kHz with a stopband
frequency of 1.2 kHz. We will limit the passband ripple to 1 dB and require 60
dB of attenuation between the passband and stopband frequencies.
1 To specify the filter use fdesign.lowpasswith the parameters given above.
You can copy and paste the following code at the MATLAB command
prompt.
fdesign and design. The use of fdesign and design provides a
2 To design the filter use design with the appropriate design methods. In
this example, we create FIR equiripple and IIR Butterworth designs and
compare the filters’ magnitude responses.
Hd1=design(d,'equiripple'); %FIR equiripple design
Hd2=design(d,'butter'); %Butterworth design
Hd=[Hd1 Hd2];%filter object with both designs
%compare filters
fvtool(Hd,'legend','on'); axis([0 2 -70 10])
4-21
4 Filter Design with the FDATool GUI
4-22
To determine which filter design methods are available for a given Filter
Specification Object, use designmethods. For the lowpass filter example
above, you have a choice of two FIR and four IIR digital filter designs:
nmethods(d)
desig
n Methods for class fdesign.lowpass (Fp,Fst,Ap,A st) :
Desig
er
butt
y1
cheb
y2
cheb
ip
ell
iripple
equ
serwin
kai
Designing Filters using Command Line Functions
For more d etailed information on filter specification and implementation
objects see “Designing a Filter in Fdesign — Process Overview”.
4-23
4 Filter Design with the FDATool GUI
Where to Find More Information
The previous sections des cribed how to use the fundamental features of
FDATool, FVTool, and the
advanced information and more complex examples, refer to other sections
of Signal Processing Toolbox online help or Signal Processing Toolbox
documentation available on The MathWorks Web site (
fdesign and design commands. For more
www.mathworks.com).
4-24
Spectral Analysis
• “Introduction” on page 5-2
• “Creating a Spectral Analysis Object” on page 5-4
• “Producing a PSD Estimate” on page 5-6
• “Changing Spectral Analysis Object P roperty Values” on page 5-8
• “Measuring Signal Power” on page 5-13
5
5 Spectral Analysis
Introduction
In this section...
“Spectral Estimators” on page 5-2
“Spectral Analysis Algorithms” on page 5-2
“Spectral Analysis Objects” on page 5-3
Spectral Estimators
Spectral analysis includes three types of spectral estimators — power spectral
density (PSD), mean-square spectrum (MSS) and pseudo spectrum.
• Power spectral density (
has power/frequency units.
• Mean-square (power) spectrum (
frequency.
• Pseudospectrum (
not have any units.
psd) measures power per unit of frequency and
msspectrum) measures power at a specific
pseudospectrum) returns a pseudo spectrum that does
Spectral Analysis Algorithms
Signal Processing Toolbox software provides several algorithms to compute
of spectral estimates. The following table indicates which algorithms are
available to compute each type of estimator and produce a spectrum object.
For general information on objects, see Object-Oriented Programming.For
details on spectrum objects, see the
spectrum reference page.
5-2
Introduction
Spectral
Algorithms
Estimator
Power spectral
density (
psd)
Mean-square
spectrum
(
msspectrum)
Pseudo spectrum
(
pseudospectrum)
Burg (
spectrum.burg),
Covariance (
Modified covariance (
Thomson multitaper method (MTM) (
Periodogram (
Welch (
Yule-Walker autoregressive (
See also
Periodogram (
Welch (
See also
Eigenvector (
spectrum.cov),
spectrum.mcov),
spectrum.mtm),
spectrum.periodogram),
spectrum.welch),
spectrum.yulear)
dspdata.psd
spectrum.periodogram),
spectrum.welch)
dspdata.msspectrum
spectrum.eigenvector),
MUSIC (Multiple Signal Classification)
(
spectrum.music)
See also
dspdata.pseudospectrum
Spectral Analysis Objects
Spectral analysis objects contain property values for the particular algorithm.
To calculate a spectrum estimate, you first create an estimator object using
one of the algorithms (
estimator object to a spectrum estimation algorithm (
this example,
Hpsd is the resulting PSD estimate.
h is a Burg spectrum object, x is the original input data, and
h = spectrum.burg). You then pass your data and the
Hpsd = psd(h,x)). In
For more information and examples, see the Getting Started with Spectral
Analysis Objects demo.
5-3
5 Spectral Analysis
Creating a Spectral Analysis Object
In this example, we construct a PSD estimate of a signal using W elch’s
overlapped segment method. To run the example, copy and paste the following
code at the MATLAB command prompt.
Fs=10000; %sampling frequency
t=0:(1/Fs):1; %one second time vector
y=0.4*cos(2*pi*2000*t)+0.2*sin(2*pi*1000*t)+randn(size(t));
Next create a default Welch spectrum object.
h = spectrum.welch;
Entering h at the command pro m pt shows the default settings for the Welch
spectrum object.
h=
EstimationMethod: 'Welch'
SegmentLength: 64
OverlapPercent: 50
WindowName: 'Hamming'
SamplingFlag: 'symmetric'
5-4
If you want to specify parameters instead of using default values, you can
use syntax like the following:
h=spectrum.welch('kaiser',128,50);
The code creates a Welch spectrum object using a Kaiser window (see kaiser).
Wehavesetthesegmentlengthequalto128withanoverlappercentageof
50. The Kaiser window has an additional parameter,
beta, which governs
the tradeoff between the width of the main lobe and level of energy in the
sidelobes. Larger values of
beta decrease the height of the sidelobes at the
expense of widening the main lobe. You can specify additional parameters
for a chosen window by passing them to the spectrum object in a cell array.
For example,
h=spectrum.welch({'Kaiser',0.2},128,50)
h=
Creating a Spectral Analysis Object
EstimationMethod: 'Welch'
SegmentLength: 128
OverlapPercent: 50
WindowName: 'Kaiser'
Beta: 0.2000
For additional information on changing the property values of spectrum
objects, see “Changing Spectral Analysis Object Property Values” on page 5-8
for more information.
5-5
5 Spectral Analysis
Producing a PSD Estimate
We now produce a PSD estimate of the signal we created in the previous
section. To generate a PSD estimate, you apply a spectral estimation method
on your spectrum object and d ata. ,
h = spectrum.welch;
Hpsd=psd(h,y,'Fs',Fs,'ConfLevel',0.95);
plot(Hpsd)
5-6
The syntax for using psd, msspectrum,orps eudospectrum is the same. The
first input is the spectrum object (
(data), followed by any settable properties using property-value pairs (
h) and the second input (y)isthesignal
'Fs',
Producing a PSD Estimate
Fs,'ConfLevel',0.95,’). To set property-value pairs, you list the property
first and then the value for that property.
5-7
5 Spectral Analysis
Changing Spectral Analysis Object Property Values
In this section...
“Using the set command to Set Property Values” on page 5-8
“Using Options Objects to Set Property Values” on page 5-11
Using the set com mand to Set Property Values
After you have created a spectrum object, you can use the set method or
dot notation to change any of its properties, except the
property. (Since EstimationMethod is the central property of a particular
spectrum object, you cannot change it.) To change the window from Hamming
(used in the Welch object) to Chebyshev, use d ot notation as follows:
h.WindowName = 'Chebyshev'
h=
EstimationMethod: 'Welch'
SegmentLength: 66
OverlapPercent: 50
WindowName: 'Chebyshev'
SidelobeAtten: 100
EstimationMethod
5-8
or use the set method,
set(h,'WindowName','Chebyshev')
Chebyshev windows have a sidelobe attenuation parameter that automatically
appears in the list of properties. To change a window parameter, you use a
cell array containing the window name and parameter value, such as,
h = spectrum.welch({'Chebyshev',80})
h=
EstimationMethod: 'Welch'
SegmentLength: 64
OverlapPercent: 50
WindowName: 'Chebyshev'
SidelobeAtten: 80
Changing Spectral Analysis Object Property Values
To see a list of all available window functions for the Welch spectral analysis
object, enter the following at the MATLAB command prompt:
The Signal Processing Toolbox provides the most common window functions
used in nonparametric spectral analysis. However, you also have the
flexibility to use a user-defined window function as the next section
demonstrates.
Using a User-Defined Window
This section demonstrates how to construct a Welch PSD estimate with
a user-defined window, a discrete prolate spheroidal sequence (see
First, construct a Welch spectral analysis object with a user-defined window
function using the following code:
h=spectrum.welch('user defined')
h=
dpss).
5-9
5 Spectral Analysis
EstimationMethod: 'Welch'
SegmentLength: 64
OverlapPercent: 50
WindowName: 'User Defined'
MATLABExpression: ''
Parameters: []
To specify a discrete prolate spheroidal sequence as the window function, set
the
MATLABExpression property to 'dpss'. You use the syntax dpss(N,NW,1)
to construct the window function. N is the SegmentLength property, NW
represents the time half bandwidth product, and the scalar 1 indicates use of
only the first discrete prolate spheroidal sequence.
set(h,'matlabexpression','dpss')
h=
EstimationMethod: 'Welch'
SegmentLength: 64
OverlapPercent: 50
WindowName: 'User Defined'
MATLABExpression: 'dpss'
Parameters: []
5-10
Finally, use the Parameters property to supply required or optional input
arguments for the window function defined by
MATLABExpression.This
example uses a time half bandwidth product of 2.5. You specify the length by
the SegmentLe ng th property. Because you are not constructing a multitaper
spectral estimate, you use only the first discrete prolate spheroidal sequence.
set(h,'parameters',{2.5,1})
h
h=
EstimationMethod: 'Welch'
SegmentLength: 64
OverlapPercent: 50
WindowName: 'User Defined'
MATLABExpression: 'dpss'
Parameters: {[2.5000][1]}
Changing Spectral Analysis Object Property Values
MATLAB evaluates the user-defined window as dpss(64,2.5,1).
The f ol lo wi n g MATLAB code obtains the Welch PSD estimate of a signal with
a user-defined window. Use the first discrete prolate spheroidal sequence of
length 128 and a time half bandwidth product of 2.5 as the window function
Fs=10000; %sampling frequency
t=0:(1/Fs):1; %one second time vector
y=0.4*cos(2*pi*2000*t)+0.4*sin(2*pi*1000*t)+randn(size(t));
h=spectrum.welch('user defined');
set(h,'matlabexpression','dpss',...
'parameters',{2.5,1},'segmentlength',128);
Hs=psd(h,y,'Fs',Fs);
plot(Hs);
Using Options Objects to Set Property Values
Another way to set properties for a particular estimation method is to use the
options object associated with that method. For example, use the following
syntax to create an options object from the spectrum object for use with the
mean-square spectrum:
Hopts= msspe ctrumopts(h)% Create op tion s object
5-11
5 Spectral Analysis
Hopts =
NFFT: 'Nextpow2'
NormalizedFrequency: true
Fs: 'Normalized'
SpectrumType: 'Onesided'
CenterDC: false
You can change any of the options properties using set,followedbythe
options object and property-value pairs, such as
set(Hopts,'Fs',48000)
To pass the options object to the first msspectrum in the filtered data, use
msspectrum(h,yw(:,1),Hopts)
Options o bjects that correspond to psd and pseudospectr um are psdopt s and
pseudospectrumopts, respectively.
5-12
Measuring Signal Power
This section shows you how to measure the average power of a deterministic
periodic signal. This type of signal is continuous in time, but produces a
discrete power spectrum. A signal m ade up of sinusoids is an example of
a power signal that has infinite energy, but finite average power . The
example shows how to estimate the average p ow er of a sinewave with a
peak amplitude of 1.
First, you measure the average power using a periodo gram spectrum object,
and then calculate and plot the mean-square (power) spectrum.
Fs = 1024;% Sampling frequency
t= 0:1/Fs:1- (1/Fs);% Time vector
A= 1;% Peak amplitude
F1 = 128;% Hz
x= A*sin(2*p i*t*F1);% Sinusoidal signal
hp = spectrum.periodogram('hamming');% Create periodogram
Measuring Signal Power
% Create options object an d set properties
hpopts = psdopts(hp,x);
set(hpopts,'Fs',Fs,'SpectrumType','twosided','centerdc',true);
msspectrum(hp,x,hpopts);
v = axis; axis([v(1) v(2) -10 -5.5]);% Zoom in Y.
5-13
5 Spectral Analysis
5-14
The average power of each complex sinusoid is approximately -6 dB.
To calculate the average power by "integrating" under the power spectral
density (PSD) curve, you use the
and then use the
hpsd = psd(hp,x,hpopts);
plot(hpsd);
avgpower method.
psd method on the spectrum object (hp),
Measuring Signal Power
Notice that the peaks of this plot are not the same height as the mean-square
spectrumpeaks. TheareaunderthePSDcurveisthemeasureoftheaverage
power, not the peak heights. By using the
avgpower method and converting
theresulttodB,youcanseethattheaveragepoweristhesameforboth
of them.
power_freqdomain = avgpower(hpsd)
power_freqdomain =
0.5000
ording to Parseval’s theorem, the total average power in a sinusoid is the
Acc
e, whether you compute the power in the time or frequency domain. You
sam
5-15
5 Spectral Analysis
can verify the estimated average power by summing the signal in the time
domain.
power_timedomain = sum(abs(x).^2)/length(x)
power_timedomain =
0.5000
Converting this linear value to a logarithmic value, you see that the average
power is the same as shown in the mean-square spectrum plot.
10*log10(power_freqdomain/2)
ans =
-6.0206
5-16
Index
IndexA
aliasing
sinc functions 2-10
analog signals.Seesignals
annotation 4-15
ASCII files