# filt2block

## Syntax

• `filt2block(b)` example
• `filt2block(b,'subsystem')`
• `filt2block(___,'FilterStructure',structure)` example
• `filt2block(b,a)` example
• ` filt2block(b,a,'subsystem')`
• `filt2block(___,'FilterStructure',structure)` example
• `filt2block(sos)`
• ` filt2block(sos,'subsystem')` example
• `filt2block(___,'FilterStructure',structure)`
• `filt2block(d)`
• ` filt2block(d,'subsystem')`
• `filt2block(___,'FilterStructure',structure)` example
• `filt2block(___,Name,Value)` example

## Description

example

````filt2block(b)` generates a `Discrete FIR Filter block ` with filter coefficients, `b`.```
````filt2block(b,'subsystem')` generates a Simulink® subsystem block that implements an FIR filter using sum, gain, and delay blocks.```

example

````filt2block(___,'FilterStructure',structure)` specifies the filter `structure` for the FIR filter.```

example

````filt2block(b,a)` generates a `Discrete Filter block` with numerator coefficients, `b`, and denominator coefficients, `a`.```
```` filt2block(b,a,'subsystem')` generates a Simulink subsystem block that implements an IIR filter using sum, gain, and delay blocks.```

example

````filt2block(___,'FilterStructure',structure)` specifies the filter `structure` for the IIR filter.```
````filt2block(sos)` generates a `Biquad Filter block` with second order sections matrix, `sos`. `sos` is a K-by-6 matrix, where the number of sections, `K`, must be greater than or equal to 2. You must have the DSP System Toolbox™ software installed to use this syntax.```

example

```` filt2block(sos,'subsystem')` generates a Simulink subsystem block that implements a biquad filter using sum, gain, and delay blocks.```
````filt2block(___,'FilterStructure',structure)` specifies the filter `structure` for the biquad filter.```
````filt2block(d)` generates a Simulink block that implements a digital filter, `d`. Use the function `designfilt` to create `d`. The block is a ```Discrete FIR Filter block``` if `d` is FIR and a ```Biquad Filter block``` if `d` is IIR.```
```` filt2block(d,'subsystem')` generates a Simulink subsystem block that implements `d` using sum, gain, and delay blocks.```

example

````filt2block(___,'FilterStructure',structure)` specifies the filter `structure` to implement `d`.```

example

````filt2block(___,Name,Value)` uses additional options specified by one or more `Name,Value` pair arguments.```

## Examples

collapse all

### Generate Block from FIR Filter

Design an order 30 FIR filter using the window method. Specify a cutoff frequency of π/4 radians/sample. Create a Simulink block.

```b = fir1(30,0.25); filt2block(b)```

### Generate Block from IIR Filter

Design an order 30 IIR Butterworth filter. Specify a cutoff frequency of π/4 radians/sample. Create a Simulink block.

```[b,a] = butter(30,0.25); filt2block(b,a)```

### Generate FIR Filter with Direct Form I Transposed Structure

Design an order 30 FIR filter using the window method. Specify a cutoff frequency of π/4 radians/sample. Create a Simulink block with a direct form I transposed structure

```b = fir1(30,0.25); filt2block(b,'FilterStructure','directFormTransposed')```

### Generate IIR Filter with Direct Form I Structure

Design an order 30 IIR Butterworth filter. Specify a cutoff frequency of π/4 radians/sample. Create a Simulink block with a direct form I structure.

```[b,a] = butter(30,0.25); filt2block(b,a,'FilterStructure','directForm1')```

### Generate Simulink Subsystem Block from Second Order Section Matrix

Design a 5-th order Butterworth filter with a cutoff frequency of 0.2π radians/sample. Obtain the filter in biquad form and generate a Simulink subsystem block from the second order sections.

```[z,p,k] = butter(5,0.2); sos = zp2sos(z,p,k); filt2block(sos,'subsystem') ```

### Lowpass FIR Filter Block with Sample-Based Processing

Generate a Simulink subsystem block that implements an FIR lowpass filter using sum, gain, and delay blocks. Specify the input processing to be elements as channels by specifying `'FrameBasedProcessing'` as `false`.

```B = fir1(30,.25); filt2block(B,'subsystem','BlockName','Lowpass FIR',... 'FrameBasedProcessing',false)```

### New Model with Highpass Elliptic Filter Block

Design a highpass elliptic filter with normalized stopband frequency 0.45 and normalized passband frequency 0.55. Specify a stopband attenuation of 40 dB and a passband ripple of 0.5 dB. Implement the filter as a Direct Form II structure, call it "HP", and place it in a new Simulink model.

```d = designfilt('highpassiir','DesignMethod','ellip', ... 'StopbandFrequency',0.45,'PassbandFrequency',0.55, ... 'StopbandAttenuation',40,'PassbandRipple',0.5); filt2block(d,'subsystem','FilterStructure','directForm2', ... 'Destination','new','BlockName','HP')```

## Input Arguments

collapse all

### `b` — Numerator filter coefficientsrow or column vector

Numerator filter coefficients, specified as a row or column vector. The filter coefficients are ordered in descending powers of z–1 with the first element corresponding to the coefficient for z0.

Example: `b = fir1(30,0.25);`

Data Types: `single` | `double`
Complex Number Support: Yes

### `a` — Denominator filter coefficientsrow or column vector

Denominator filter coefficients, specified as a row or column vector. The filter coefficients are ordered in descending powers of z–1 with the first element corresponding to the coefficient for z0. The first filter coefficient must be 1.

Data Types: `single` | `double`
Complex Number Support: Yes

### `sos` — Second-order section matrixK-by-2 matrix

Second order section matrix, specified as a K-by-2 matrix. Each row of the matrix contains the coefficients for a biquadratic rational function in z–1. The Z-transform of the Kth rational biquadratic system impulse response is

${H}_{k}\left(z\right)=\frac{{B}_{k}\left(1\right)+{B}_{k}\left(2\right){z}^{-1}+{B}_{k}\left(3\right){z}^{-2}}{{A}_{k}\left(1\right)+{A}_{k}\left(2\right){z}^{-1}+{A}_{k}\left(3\right){z}^{-2}}$

The coefficients in the Kth row of the matrix, `sos`, are ordered as follows:

$\left[\begin{array}{cccccc}{B}_{k}\left(1\right)& {B}_{k}\left(2\right)& {B}_{k}\left(3\right)& {A}_{k}\left(1\right)& {A}_{k}\left(2\right)& {A}_{k}\left(3\right)\end{array}\right]$

The frequency response of the filter is its transfer function evaluated on the unit circle with z = ej2πf.

Data Types: `single` | `double`
Complex Number Support: Yes

### `d` — Digital filter`digitalFilter` object

Digital filter, specified as a `digitalFilter` object. Use `designfilt` to generate a digital filter based on frequency-response specifications.

Example: `d = designfilt('lowpassiir','FilterOrder',3,'HalfPowerFrequency',0.5)` specifies a third-order Butterworth filter with normalized 3-dB frequency 0.5π rad/sample.

### `structure` — Filter structurestring

Filter structure, specified as a string. Valid options for `structure` depend on the input arguments. The following table lists the valid filter structures by input.

InputFilter Structures
`b``'directForm'` (default), `'directFormTransposed'`, `'directFormSymmetric'`, `'directFormAntiSymmetric'`, `'overlapAdd'`. The `'overlapAdd'` structure is only available when you omit `'subsystem'` and requires a DSP System Toolbox software license.
`a``'directForm2'` (default), `'directForm1'`, `'directForm1Transposed'`, `'directForm2'`, `'directForm2Transposed'`
`sos``'directForm2Transposed'` (default), `'directForm1'`, `'directForm1Transposed'`, `'directForm2'`
`d`
• For FIR filters: `'directForm'` (default), `'directFormTransposed'`, `'directFormSymmetric'`, `'directFormAntiSymmetric'`, `'overlapAdd'`. The `'overlapAdd'` structure is only available when you omit `'subsystem'` and requires a DSP System Toolbox software license.

• For IIR filters: `'directForm2Transposed'` (default), `'directForm1'`, `'directForm1Transposed'`, `'directForm2'`

### Name-Value Pair Arguments

Specify optional comma-separated pairs of `Name,Value` arguments. `Name` is the argument name and `Value` is the corresponding value. `Name` must appear inside single quotes (`' '`). You can specify several name and value pair arguments in any order as `Name1,Value1,...,NameN,ValueN`.

Example: ```filt2block(...,'subsystem','BlockName','Lowpass FIR','FrameBasedProcessing',false)```

### `'Destination'` — Destination for Simulink filter block`'current'` (default) | `'new'` | user-defined string

Destination for the Simulink filter block, specified as a string. You can add the filter block to your current model with `'current'`, add the filter block to a new model with `'new'`, or specify the name of a a target subsystem.

Example: ` filt2block(b,'subsystem','MyFilterBlock')`

Data Types: `char`

### `'BlockName'` — Block namestring

Block name, specified as a string.

### `'OverwriteBlock'` — Overwrite block`false` (default) | `true`

Overwrite block, specified as a logical `false` or `true`. If you use a value for `'BlockName'` that is the same as an existing block, the value of `'OverwriteBlock'` determines whether the block is overwritten. The default value is `false`.

Data Types: `logical`

### `'MapCoefficientsToPorts'` — Map coefficients to ports`false` (default) | `true`

Map coefficients to ports, specified as a logical `false` or `true`.

Data Types: `logical`

### `'CoefficientNames'` — Coefficient variable namescell array of strings

Coefficient variable names, specified as a cell array. This name-value pair is only applicable when `'MapCoefficientsToPorts'` is `true`. The default values are `{'Num'}`, `{'Num','Den'}`, and `{'Num','Den','g'}` for FIR, IIR, and biquad filters.

Data Types: `cell`

### `'FrameBasedProcessing'` — Frame-based or sample-based processing`true` (default) | `false`

Frame-based or sample-based processing, specified as a logical `true` or `false`. The default is `true` and frame-based processing is used.

Data Types: `logical`

### `'OptimizeZeros'` — Remove zero-gain blocks`true` (default) | `false`

Remove zero-gain blocks, specified as a logical `true` or `false`. By default zero-gain blocks are removed.

Data Types: `logical`

### `'OptimizeOnes'` — Replace unity-gain blocks with direct connection`true` (default) | `false`

Replace unity-gain blocks with direct connection, specified as a logical `true` or `false`. The default is `true`.

Data Types: `logical`

### `'OptimizeNegativeOnes'` — Replace negative unity-gain blocks with sign change`true` (default) | `false`

Replace negative unity-gain blocks with a sign change at the nearest block, specified as a logical `true` or `false`. The default is `true`.

Data Types: `logical`

### `'OptimizeDelayChains'` — Replace cascaded delays with a single delay`true` (default) | `false`

Replace cascaded delays with a single delay, specified as a logical `true` or `false`. The default is `true`.

Data Types: `logical`