Power spectral density of filter output due to roundoff noise
hpsd = noisepsd(H,L)
hpsd = noisepsd(H,L,param1,value1,param2,value2,...)
hpsd = noisepsd(H,L,opts)
noisepsd(H,...)
hpsd = noisepsd(H,L)
computes
the power spectral density (PSD) at the output of dfilt
object or filter System object™, H
,
occurring because of roundoff noise. This noise is produced by quantization
errors within the filter. L
is the number of trials
used to compute the average. The PSD is computed from the average
over the L
trials. The more trials you specify,
the better the estimate, but at the expense of longer computation
time. When you do not explicitly specify L
, the
default is 10 trials.
hpsd
is a psd
data object.
To extract the PSD vector (the data from the PSD) from hpsd
,
enter
get(hpsd,'data')
at the prompt. Plot the PSD data with plot(hpsd)
.
The average power of the output noise (the integral of the PSD) can
be computed with avgpower
, a method of dspdata
objects:
avgpwr = avgpower(hpsd).
hpsd = noisepsd(H,L,param1,value1,param2,value2,...)
where H
can
be either a dfilt
object or a
filter System object, specifies optional parameters via propertyname/propertyvalue
pairs. Valid psd
object property values are:
Property Name  Default Value  Description and Valid Entries 


 Specify the number of FFT points to use to calculate the PSD. 

 Determine whether to use normalized frequency. Enter
a logical value of 

 Specify the sampling frequency to use when you set 

 Specify how


 Shift the zerofrequency component to the center of a twosided spectrum.

Arithmetic (only for filter System objects)  ARITH  Analyze the filter System object, based on the arithmetic
specified in the ARITH input. ARITH can
be set to double , single , or fixed .
The analysis tool assumes a doubleprecision filter when the arithmetic
input is not specified and the filter System object is in an unlocked
state. 
Note If the spectrum data you specify is calculated over half the Nyquist interval and you do not specify a corresponding frequency vector, the default frequency vector assumes that the number of points in the whole FFT was even. Also, the plot option to convert to a whole or twosided spectrum assumes the original whole FFT length is even. 
System object
If H
is a filter System object, noisepsd
requires
knowledge of the input data type. Analysis cannot be performed if
the input data type is not available. If you do not specify the Arithmetic
parameter,
i.e., use the syntax [h,w] = noisepsd(H)
, then
the following rules apply to this method:
The System object state is Unlocked
— noisepsd
performs
doubleprecision analysis.
The System object state is Locked
— noisepsd
performs
analysis based on the locked input data type.
If you do specify the Arithmetic
parameter,
i.e., use the syntax [h,w] = noisepsd(H,'Arithmetic', ARITH)
,
review the following rules for this method. Which rule applies depends
on the value you set for the Arithmetic
parameter.
Value  System Object State  Rule 

ARITH = 'double'  Unlocked  noisepsd performs doubleprecision analysis. 
Locked  noisepsd performs doubleprecision analysis.  
ARITH = ‘single'  Unlocked  noisepsd performs singleprecision analysis. 
Locked  noisepsd performs singleprecision analysis.  
ARITH = ‘fixed'  Unlocked  noisepsd produces an error because the fixedpoint
input data type is unknown. 
Locked  When the input data type is double or single, then noisepsd produces
an error because since the fixedpoint input data type is unknown.  
When the input data is of fixedpoint type, noisepsd performs
analysis based on the locked input data type. 
The following Filter System objects are supported by this analysis function:
Regardless of whether H
is a dfilt
object or a filter System object, hpsd = noisepsd(H,L,opts)
uses an options
object, opts
, to specify the optional input arguments.
This specification is not made using propertyvalue pairs in the command.
Use opts = noisepsdopts(H)
to create the object. opts
then
has the noisepsd
settings from H
.
After creating opts
, you change the property values
before calling noisepsd
:
set(opts,'fs',48e3); % Set Fs to 48 kHz.
Regardless of whether H
is a dfilt
object or a filter System object, noisepsd(H,...)
with no output argument
launches FVTool.
Compute the PSD of the output noise caused by the quantization processes in a fixedpoint, direct form FIR filter.
b = firgr(27,[0 .4 .6 1],[1 1 0 0]); h = dfilt.dffir(b); % Create the filter object. % Quantize the filter to fixedpoint. h.arithmetic = 'fixed'; hpsd = noisepsd(h); plot(hpsd)
hpsd
looks similar to the following figure—the
data resulting from the noise PSD calculation. You can review the
data in hpsd.data
.
McClellan, et al., ComputerBased Exercises for Signal Processing Using MATLAB 5. Upper Saddle River, N.J.: PrenticeHall, 1998.
filter
 noisepsdopts
 norm
 reorder
 scale