Main Content


Halfband filter specification object


d = fdesign.halfband
d = fdesign.halfband('type',type)
d = fdesign.halfband(spec)
d = fdesign.halfband(spec,specvalue1,specvalue2,...)
d = fdesign.halfband(specvalue1,specvalue2)
d = fdesign.halfband(...,fs)
d = fdesign.halfband(...,magunits)


d = fdesign.halfband constructs a halfband filter specification object d, applying default values for the properties tw and ast.

Using fdesign.halfband along with design method generates a System object™, if the 'SystemObject' flag in the design method is set to true.

d = fdesign.halfband('type',type) initializes the filter designer 'Type' property with type. 'type' must be either lowpass or highpass and is not case sensitive.

d = fdesign.halfband(spec) constructs object d and sets its 'Specification' to spec. Entries in spec represent various filter response features, such as the filter order, that govern the filter design. Valid entries for spec are shown below. These options are not case sensitive.

  • tw,ast (default spec)

  • n,tw

  • n

  • n,ast


  • ast — attenuation in the stop band in decibels (the default units).

  • n — filter order.

  • tw — width of the transition region between the pass and stop bands. Specified in normalized frequency units.

By default, all frequency specifications are assumed to be in normalized frequency units. Moreover, all magnitude specifications are assumed to be in dB. Different specification types may have different design methods available.

The filter design methods that apply to a halfband filter specification object change depending on the Specification choice. Use designmethods to determine which design method applies to an object and its specification choice. Different filter design methods also have options that you can specify. Use designopts with the design method to see the available options. For example:


d = fdesign.halfband(spec,specvalue1,specvalue2,...) constructs an object d and sets its specifications at construction time.

d = fdesign.halfband(specvalue1,specvalue2) constructs an object d assuming the default Specification property tw,ast, using the values you provide for the input arguments specvalue1 and specvalue2 for tw and ast.

d = fdesign.halfband(...,fs) adds the argument fs, specified in Hz to define the sampling frequency to use. In this case, all frequencies in the specifications are in Hz as well.

d = fdesign.halfband(...,magunits) specifies the units for any magnitude specification you provide in the input arguments. magunits can be one of

  • linear — specify the magnitude in linear units

  • dB — specify the magnitude in dB (decibels)

  • squared — specify the magnitude in power units

When you omit the magunits argument, fdesign assumes that all magnitudes are in decibels. Note that fdesign stores all magnitude specifications in decibels (converting to decibels when necessary) regardless of how you specify the magnitudes.


collapse all

Create a default halfband filter specifications object.


Create another halfband filter object, passing the specification values to the object rather than accepting the default values for n and ast.

d2 = fdesign.halfband('n,ast', 42, 80);

For another example, pass the filter values that correspond to the default Specification - n,ast.

d3 = fdesign.halfband(.01, 80);

This example designs an equiripple FIR filter, starting by passing a new specification type and specification values to fdesign.halfband.

hs = fdesign.halfband('n,ast',80,70);
hd =design(hs,'equiripple','SystemObject',true);

In this example, pass the specifications for the filter, and then design a least-squares FIR filter from the object, using firls as the design method.

hs = fdesign.halfband('n,tw', 42, .04);
hd2 = design(hs,'firls','SystemObject',true);

Create two equiripple halfband filters with and without a nonnegative zero phase response:


Equiripple halfband filter with nonnegative zero phase response

Hd1 = design(f,'equiripple','ZeroPhase',true,'SystemObject',true);

Equiripple halfband filter with zero phase false 'zerophase',false is the default


Obtain real-valued amplitudes (not magnitudes)


Plot and compare response

xlabel('Radians/sample'); ylabel('Amplitude');
hold on;
axis tight; grid on;
legend('with ''ZeroPhase'', true','with ''ZeroPhase'' false');

Note that the amplitude of the zero phase response (black line) is nonnegative for all frequencies. The 'ZeroPhase' option is valid only for equiripple halfband designs with the 'N,TW' specification. You cannot specify 'MinPhase' and 'ZeroPhase' to be simultaneously 'true'.

Version History

Introduced in R2011a