Products & Services Solutions Academia Support User Community Company

Learn more about Filter Design Toolbox   

scalecheck - Check scaling of SOS filter

Syntax

s = scalecheck(hd,pnorm)

Description

For df1sos and df2tsos Filters

s = scalecheck(hd,pnorm) returns a row vector s that reports the p-norm of the filter computed from the filter input to the output of each second-order section. Therefore, the number of elements in s is one less than the number of sections in the filter. Note that this p-norm computation does not include the trailing scale value of the filter (which you can find by entering

hd.scalevalue(end)

at the MATLAB prompt.

pnorm can be either frequency-domain norms specified by L1, L2, or Linf or discrete-time-domain norms — l1, l2, linf. Note that the L2-norm of a filter is equal to the l2-norm (Parseval's theorem). This is not true for other norms.

For df2sos and df1tsos Filters

s = scalecheck(hd,pnorm) returns s, a row vector whose elements contain the p-norm from the filter input to the input of the recursive part of each second-order section. This computation of the p-norm corresponds to the input to the multipliers in these filter structures, and are the locations in the signal flow where overflow should be avoided.

When hd has nontrivial scale values, that is, if any scale values are not equal to one, s is a two-row matrix, rather than a vector. The first row elements of s report the p-norm of the filter computed from the filter input to the output of each second-order section. The elements of the second row of s contain the p-norm computed from the input of the filter to the input of each scale value between the sections. Note that for df2sos and df1tsos filter structures, the last numerator and the trailing scale value for the filter are not included when scalecheck checks the scale.

For a given p-norm, an optimally scaled filter has partial norms equal to one, so matrix s contain all ones.

Examples

Check the Linf-norm scaling of a filter.

% Create filter design specifications
hs = fdesign.lowpass; 
object.
hd = ellip(hs);       % Design an elliptic sos filter
scale(hd,'Linf');
s = scalecheck(hd,'Linf')

Or, in another form:

[b,a]=ellip(10,.5,20,0.5);
[s,g]=tf2sos(b,a);
hd=dfilt.df1sos(s,g)

hd =

         FilterStructure: 'Direct-Form I, Second-Order Sections'
              Arithmetic: 'double'
               sosMatrix: [5x6 double]
             ScaleValues: [6x1 double]
        PersistentMemory: false
                  States: [1x1 filtstates.dfiir]

1x1 struct array with no fields.

scalecheck(hd,'Linf')

ans =

    0.7631    0.9627    0.9952    0.9994    1.0000

See Also

norm, reorder, scale, scaleopts

  


Free Early Verification Kit

Learn how to apply early verification to your development process through these technical resources.

How much time do you spend on testing to ensure implementation meets system-level requirements?

 © 1984-2009- The MathWorks, Inc.    -   Site Help   -   Patents   -   Trademarks   -   Privacy Policy   -   Preventing Piracy   -   RSS