Documentation 
Model biquadratic IIR (SOS) filters
The Biquad Filter block independently filters each channel of the input signal with the specified biquadratic IIR filter. When you specify the filter coefficients in the dialog box, the block implements static filters with fixed coefficients. When you provide the filter coefficients through an input port, you can tune the coefficients during simulation.
The block filters an MbyN input matrix as follows:
When you set the Input processing parameter to Columns as channels (frame based), the block treats each column as a separate channel. In this mode, the block creates M instances of the same filter, each with its own independent state buffer. Each of the M filters process N input samples at every Simulink^{®} time step.
When you set the Input processing parameter to Elements as channels (sample based), the block treats each element as a separate channel. In this mode, the block creates M*N instances of the same filter, each with its own independent state buffer. Each filter processes one input sample at every Simulink time step.
This block supports variablesize input. This means that while the block is simulating, the frame size (number of rows) can change. The output dimensions always equal those of the input signal. The outputs of this block numerically match the outputs of the dfilt object.
The Biquad Filter block supports the Simulink state logging feature. See States in the Simulink User's Guide for more information.
The Biquad Filter block can operate in three different modes. Select the mode in the Coefficient source group box.
If you select Dialog parameters, you enter information about the filter such as structure and coefficients in the block mask. In this mode, you can choose the following filter structures in the Filter structure parameter:
Direct form I
Direct form I transposed
Direct form II
Direct form II transposed
If you select Input port(s), you enter information about the filter structure in the block mask using the Filter structure parameter, but the filter coefficients come into the block via input ports. The following additional ports appear on the block icon:
Num — numerator coefficients
Den — denominator coefficients
g — scale values
Num must be a 3–by–N numeric matrix, Den must be a 2–by–N numeric matrix, and g must be a 1–by–(N+1) numeric vector, where N is the number of biquad filter sections. The object assumes the first denominator coefficients of each section to be 1. This configuration is applicable when the SOSMatrixSource property is ‘Input port' and the ScaleValuesInputPort property is true. The reason you would need to specify Num and Den instead of the SOSMatrix, is that in FixedPoint operation, the numerators and denominators can have different fraction lengths. Therefor there is a need to be able to pass the data of the numerator with a different fixedpoint type as that of the denominator.
If you select Discretetime filter object (DFILT), you specify the filter using a dfilt object. This block supports the following dfilt structures:
The SOS matrix (Mx6) is an Mby6 matrix, where M is the number of sections in the secondorder section filter. Each row of the SOS matrix contains the numerator and denominator coefficients (b_{ik} and a_{ik}) of the corresponding section in the filter.
$$\left[\begin{array}{cccccc}{b}_{01}& {b}_{11}& {b}_{21}& {a}_{01}& {a}_{11}& {a}_{21}\\ {b}_{02}& {b}_{12}& {b}_{22}& {a}_{02}& {a}_{12}& {a}_{22}\\ \vdots & \vdots & \vdots & \vdots & \vdots & \vdots \\ {b}_{0M}& {b}_{1M}& {b}_{2M}& {a}_{0M}& {a}_{1M}& {a}_{2M}\end{array}\right]$$
You can use the ss2sos and tf2sos functions from Signal Processing Toolbox™ software to convert a statespace or transfer function description of your filter into the secondorder section description used by this block.
The Scale values parameter specifies the scale values the block uses between each SOS section. You can specify a realvalued scalar or a vector of length M+1.
If you enter a scalar, the value specifies the gain value before the first section of the secondorder filter. The rest of the gain values default to 1.
If you enter a vector of M+1 values, each value specifies a separate section of the filter. For example, the first element is the first gain value, the second element is the second gain value, and so on.
Select the Optimize unity scale values check box to optimize your simulation when one or more scale values equal 1. Selecting this option removes the unity gains so that the values are treated like Simulink lines or wires. In some fixedpoint cases when there are unity scale values, selecting this parameter also omits certain casts. Refer to Filter Structure Diagrams for more information.
The Biquad Filter block initializes the internal filter states to zero by default. You can optionally use the Initial conditions or Initial conditions on zeros side and Initial conditions on poles side parameters to specify nonzero initial states for the filter delays.
To determine the number of initial conditions you must specify and how to specify them, see the following table on valid initial conditions.
Valid Initial Conditions
Initial Condition  Description 

Scalar  The block initializes all delay elements in the filter to the scalar value. 
Vector or matrix  Each vector or matrix element specifies a unique initial condition for a corresponding delay element in a corresponding channel. Where M is the number of sections and N is the number of input channels:

See the Filter Structure Diagrams section for diagrams showing the data types the biquad filter block uses when processing fixedpoint signals.
Open an example model by typing ex_biquad_filter_refex_biquad_filter_ref at the MATLAB^{®} command line.
The Biquad Filter block can operate in three different modes. Select the mode in the Coefficient source group box.
If you select Dialog parameters, you enter information about the filter such as structure and coefficients in the block mask. In this mode, you can choose the following filter structures in the Filter structure parameter:
Direct form I
Direct form I transposed
Direct form II
Direct form II transposed
If you select Input port(s), you enter information about the filter structure in the block mask using the Filter structure parameter, but the filter coefficients come into the block via input ports. The following additional ports appear on the block icon:
Num — numerator coefficients
Den — denominator coefficients
g — scale values
Num must be a 3–by–N numeric matrix, Den must be a 2–by–N numeric matrix, and g must be a 1–by–(N+1) numeric vector, where N is the number of biquad filter sections. The object assumes the first denominator coefficients of each section to be 1. This configuration is applicable when the SOSMatrixSource property is ‘Input port' and the ScaleValuesInputPort property is true. The reason you would need to specify Num and Den instead of the SOSMatrix, is that in FixedPoint operation, the numerators and denominators can have different fraction lengths. Therefor there is a need to be able to pass the data of the numerator with a different fixedpoint type as that of the denominator.
If you select Discretetime filter object (DFILT), you specify the filter using a dfilt object. This block supports the following dfilt structures:
The Main pane of the Biquad Filter block dialog appears as follows when Dialog parameters is selected in the Coefficient source group box.
Select the filter structure.
This parameter is only visible when Dialog parameters or Input port(s) is selected.
Specify an Mby6 matrix, where M is the number of sections in the secondorder section filter. Each row of the SOS matrix contains the numerator and denominator coefficients (b_{ik} and a_{ik}) of the corresponding section in the filter.
$$\left[\begin{array}{cccccc}{b}_{01}& {b}_{11}& {b}_{21}& {a}_{01}& {a}_{11}& {a}_{21}\\ {b}_{02}& {b}_{12}& {b}_{22}& {a}_{02}& {a}_{12}& {a}_{22}\\ \vdots & \vdots & \vdots & \vdots & \vdots & \vdots \\ {b}_{0M}& {b}_{1M}& {b}_{2M}& {a}_{0M}& {a}_{1M}& {a}_{2M}\end{array}\right]$$
This parameter is only visible when Dialog parameters is selected.
The Scale values parameter specifies the scalar or vector of M+1 scale values to be used between SOS sections.
When you enter a scalar, the value specifies the gain value before the first section of the secondorder filter. The rest of the gain values default to 1.
When you enter a vector of M+1 values, each value specifies a separate section of the filter. For example, the first element is the first gain value, the second element is the second gain value, and so on.
This parameter is only visible when Dialog parameters is selected.
Specify the initial conditions of the filter states. To learn how to specify initial conditions, see Specifying Initial Conditions.
This parameter is only visible when Dialog parameters or Input port(s) is selected and the filter structure is Direct form II or Direct form II transposed.
Specify the initial conditions for the filter states on the side of the filter structure with the zeros (b_{0}, b_{1},b_{2}, ...); see the next diagram.
This parameter is only visible when Dialog parameters or Input port(s) is selected and the filter structure is Direct form I or Direct form I transposed. To learn how to specify initial conditions, seeSpecifying Initial Conditions.
Specify the initial conditions for the filter states on the side of the filter structure with the poles (a_{0}, a_{1},a_{2}, ...); see the next diagram.
This parameter is only visible when Dialog parameters or Input port(s) is selected and the filter structure is Direct form I or Direct form I transposed. To learn how to specify initial conditions, see Specifying Initial Conditions.
Specify the action the block should perform when the SOS matrix a_{0j} values do not equal one; None, Error, or Warn.
This parameter is only visible when Dialog parameters is selected.
Select this check box to optimize your simulation when one or more scale values equal 1. Selecting this option removes the unity gains so that the values are treated like Simulink lines or wires. In some fixedpoint cases when there are unity scale values, selecting this parameter also omits certain casts. Refer to Filter Structure Diagrams for more information.
This parameter is only visible when Dialog parameters is selected.
Specify how the block should process the input. You can set this parameter to one of the following options:
Columns as channels (frame based) — When you select this option, the block treats each column of the input as a separate channel.
Elements as channels (sample based) — When you select this option, the block treats each element of the input as a separate channel.
Note: The Inherited (this choice will be removed  see release notes) option will be removed in a future release. See FrameBased Processing in the DSP System Toolbox™ Release Notes for more information. 
The Main pane of the Biquad Filter block dialog appears as follows when Input port(s) is selected in the Coefficient source group box.
Select the filter structure.
This parameter is only visible when Dialog parameters or Input port(s) is selected.
Specify the initial conditions of the filter states. To learn how to specify initial conditions, see Specifying Initial Conditions.
This parameter is only visible when Dialog parameters or Input port(s) is selected and the filter structure is Direct form II or Direct form II transposed.
Specify the initial conditions for the filter states on the side of the filter structure with the zeros (b_{0}, b_{1},b_{2}, ...); see the next diagram.
This parameter is only visible when Dialog parameters or Input port(s) is selected and the filter structure is Direct form I or Direct form I transposed. To learn how to specify initial conditions, see Specifying Initial Conditions.
Specify the initial conditions for the filter states on the side of the filter structure with the poles (a_{0}, a_{1},a_{2}, ...); see the next diagram.
This parameter is only visible when Dialog parameters or Input port(s) is selected and the filter structure is Direct form I or Direct form I transposed. To learn how to specify initial conditions, see Specifying Initial Conditions.
Choose how to specify the scale values to use between filter sections. When you select Specify via input port (g), you enter the scale values as a 2D vector at port g. When you select Assume all are unity and optimize, all scale values are removed and treated like Simulink lines or wires.
This parameter is only visible when Input port(s) is selected.
Specify how the block should process the input. You can set this parameter to one of the following options:
Columns as channels (frame based) — When you select this option, the block treats each column of the input as a separate channel.
Elements as channels (sample based) — When you select this option, the block treats each element of the input as a separate channel.
Note: The Inherited (this choice will be removed  see release notes) option will be removed in a future release. See FrameBased Processing in the DSP System Toolbox Release Notes for more information. 
The Main pane of the Biquad Filter block dialog appears as follows when Discretetime filter object (DFILT) is selected in the Coefficient source group box.
Specify the discretetime filter object (dfilt) that you would like the block to implement. You can do so in one of three ways:
You can fully specify the dfilt object in the block mask.
You can enter the variable name of a dfilt object that is defined in any workspace.
You can enter a variable name for a dfilt object that is not yet defined.
For more information on creating dfilt objects, see the dfilt reference page.
This button opens the Filter Visualization Tool (fvtool) from the Signal Processing Toolbox product and displays the filter response of the dfilt object specified in the Discretetime filter object (DFILT) parameter. For more information on FVTool, see the Signal Processing Toolbox documentation.
Specify how the block should process the input. You can set this parameter to one of the following options:
Columns as channels (frame based) — When you select this option, the block treats each column of the input as a separate channel.
Elements as channels (sample based) — When you select this option, the block treats each element of the input as a separate channel.
Note: The Inherited (this choice will be removed  see release notes) option will be removed in a future release. See FrameBased Processing in the DSP System Toolbox Release Notes for more information. 
The Data Types pane of the Biquad Filter block dialog appears as follows. This pane only appears when Dialog parameters or Input port(s) is selected in the Coefficient source group box.
Select the rounding mode for fixedpoint operations. The filter coefficients do not obey this parameter; instead, they always round to Nearest.
Select the overflow mode for fixedpoint operations. The filter coefficients do not obey this parameter; instead, they are always saturated.
Choose how you specify the word length and the fraction length of the multiplicand data type of a Direct form I transposed filter structure. See FixedPoint Data Types and the Direct Form I Transposed filter structure diagram for illustrations depicting the use of the multiplicand data type in this block.
This parameter is only visible when the Filter structure parameter is set to Direct form I transposed.
When you select Same as output, these characteristics match those of the output of the block.
When you select Binary point scaling, you can enter the word length and the fraction length of the product output, in bits.
When you select Slope and bias scaling, you can enter the word length, in bits, and the slope of the product output. This block requires poweroftwo slope and a bias of zero.
Choose how you specify the word length and the fraction length of the fixedpoint data type going into each section of a biquadratic filter. See FixedPoint Data Types for illustrations depicting the use of the section input data type in this block.
When you select Same as input, these characteristics match those of the input to the block.
When you select Binary point scaling, you can enter the word and fraction lengths of the section input and output, in bits.
When you select Slope and bias scaling, you can enter the word lengths, in bits, and the slopes of the section input and output. This block requires poweroftwo slope and a bias of zero.
Choose how you specify the word length and the fraction length of the fixedpoint data type coming out of each section of a biquadratic filter. See FixedPoint Data Types for illustrations depicting the use of the section input data type in this block.
When you select Same as input, these characteristics match those of the input to the block.
When you select Binary point scaling, you can enter the word and fraction lengths of the section input and output, in bits.
When you select Slope and bias scaling, you can enter the word lengths, in bits, and the slopes of the section input and output. This block requires poweroftwo slope and a bias of zero.
Choose how you specify the word length and the fraction length of the filter coefficients (numerator, denominator, and scale value) when Dialog parameters is selected in the Coefficient source group box. See FixedPoint Data Types for illustrations depicting the use of the coefficient data types in this block:
When you select Same word length as input, the word length of the filter coefficients match that of the input to the block. In this mode, the block automatically sets the fraction length of the coefficients to the binarypoint only scaling that provides you with the best precision possible given the value and word length of the coefficients.
When you select Specify word length, you can enter the word length of the coefficients, in bits. In this mode, the block automatically sets the fraction length of the coefficients to the binarypoint only scaling that provides you with the best precision possible given the value and word length of the coefficients.
When you select Binary point scaling, you can enter the word length and the fraction length of the coefficients, in bits. If applicable, you can enter separate fraction lengths for the numerator and denominator coefficients.
When you select Slope and bias scaling, you can enter the word length, in bits, and the slope of the coefficients. If applicable, you can enter separate slopes for the numerator and denominator coefficients. This block requires poweroftwo slope and a bias of zero.
The filter coefficients do not obey the Rounding mode and the Overflow mode parameters; instead, they are always saturated and rounded to Nearest.
Use this parameter to specify how you would like to designate the product output word and fraction lengths. See FixedPoint Data Types and Multiplication Data Types for illustrations depicting the use of the product output data type in this block:
When you select Same as input, these characteristics match those of the input to the block.
When you select Binary point scaling, you can enter the word length and the fraction length of the product output, in bits.
When you select Slope and bias scaling, you can enter the word length, in bits, and the slope of the product output. This block requires poweroftwo slope and a bias of zero.
Use this parameter to specify how you would like to designate the accumulator word and fraction lengths. See FixedPoint Data Types and Multiplication Data Types for illustrations depicting the use of the accumulator data type in this block:
When you select Same as input, these characteristics match those of the input to the block.
When you select Same as product output, these characteristics match those of the product output.
When you select Binary point scaling, you can enter the word length and the fraction length of the accumulator, in bits.
When you select Slope and bias scaling, you can enter the word length, in bits, and the slope of the accumulator. This block requires poweroftwo slope and a bias of zero.
Use this parameter to specify how you would like to designate the state word and fraction lengths when Dialog parameters is selected in the Coefficient source group box. See FixedPoint Data Types for illustrations depicting the use of the state data type in this block.
This parameter is not visible for Direct form I and Direct form I transposed filter structures.
When you select Same as input, these characteristics match those of the input to the block.
When you select Same as accumulator, these characteristics match those of the accumulator.
When you select Binary point scaling, you can enter the word length and the fraction length of the accumulator, in bits.
When you select Slope and bias scaling, you can enter the word length, in bits, and the slope of the accumulator. This block requires poweroftwo slope and a bias of zero.
Choose how you specify the output word length and fraction length. See FixedPoint Data Types for illustrations depicting the use of the output data type in this block.
When you select Same as input, these characteristics match those of the input to the block.
When you select Same as accumulator, these characteristics match those of the accumulator.
When you select Binary point scaling, you can enter the word length and the fraction length of the output, in bits.
When you select Slope and bias scaling, you can enter the word length, in bits, and the slope of the output. This block requires poweroftwo slope and a bias of zero.
Select this parameter to prevent the fixedpoint tools from overriding the data types you specify on the block mask.
The diagrams in the following sections show the filter structures supported by the Biquad Filter block. They also show the data types used in the filter structures for fixedpoint signals. You can set the data types shown in these diagrams in the block dialog box. This is discussed in Dialog Box.
The following diagram shows the data types for one section of the filter for fixedpoint signals.
The following diagrams show the fixedpoint data types between filter sections.
When the data is not optimized:
When you select Optimize unity scale values and scale values equal 1:
The following diagram shows the data types for one section of the filter for fixedpoint signals.
The dashed casts are omitted when Optimize unity scale values is selected and scale values equal one.
The following diagrams show the fixedpoint data types between filter sections.
When the data is not optimized:
When you select Optimize unity scale values and scale values equal 1:
The following diagram shows the data types for one section of the filter for fixedpoint signals.
The dashed casts are omitted when Optimize unity scale values is selected and scale values equal one.
The following diagrams show the fixedpoint data types between filter sections.
When the data is not optimized:
When you select Optimize unity scale values and scale values equal 1:
The following diagram shows the data types for one section of the filter for fixedpoint signals.
The following diagrams show the fixedpoint data types between filter sections.
When the data is not optimized:
When you select Optimize unity scale values and scale values equal 1:
This block supports HDL code generation using HDL Coder™. HDL Coder provides additional configuration options that affect HDL implementation and synthesized logic. For more information on implementations, properties, and restrictions for HDL code generation, see Biquad Filter.
Port  Supported Data Types 

Input 

Output 

dfilt.df1sos  dfilt.df1tsos  dfilt.df2sos  dfilt.df2tsos  Discrete FIR Filter  dsp.BiquadFilter