# ss

Convert discrete-time filter System object to state-space representation

## Syntax

``[A,B,C,D] = ss(sysobj)``
``[A,B,C,D] = ss(sysobj,'Arithmetic',arithType)``

## Description

example

````[A,B,C,D] = ss(sysobj)` converts a filter System object™ to state-space representation given by: $\begin{array}{l}x\left(k+1\right)=Ax\left(k\right)+Bu\left(k\right),\\ y\left(k\right)=Cx\left(k\right)+Du\left(k\right),\end{array}$where x is the state vector, u is the input vector, and y is the output vector.```
````[A,B,C,D] = ss(sysobj,'Arithmetic',arithType)` analyzes the filter System object based on the arithmetic specified in `arithType`.For more input options, see `ss` in Signal Processing Toolbox™.```

## Examples

collapse all

Design a fourth-order, lowpass biquadratic filter object with a normalized cutoff frequency of 0.4.

```[z,p,k] = ellip(4,1,60,.4); % Set up the filter [s,g] = zp2sos(z,p,k); biquad = dsp.BiquadFilter(s,g,'Structure','Direct form I')```
```biquad = dsp.BiquadFilter with properties: Structure: 'Direct form I' SOSMatrixSource: 'Property' SOSMatrix: [2x6 double] ScaleValues: 0.0351 NumeratorInitialConditions: 0 DenominatorInitialConditions: 0 OptimizeUnityScaleValues: true Show all properties ```

Convert the designed filter into state-space form using the `ss` function.

`[A,B,C,D] = ss(biquad)`
```A = 8×8 0 0 0 0 0 0 0 0 1.0000 0 0 0 0 0 0 0 1.8116 1.0000 1.0095 -0.3954 0 0 0 0 0 0 1.0000 0 0 0 0 0 1.8116 1.0000 1.0095 -0.3954 0 0 0 0 0 0 0 0 1.0000 0 0 0 1.8116 1.0000 1.0095 -0.3954 1.1484 1.0000 0.5581 -0.7823 0 0 0 0 0 0 1.0000 0 ```
```B = 8×1 0.0351 0 0.0351 0 0.0351 0 0.0351 0 ```
```C = 1×8 1.8116 1.0000 1.0095 -0.3954 1.1484 1.0000 0.5581 -0.7823 ```
```D = 0.0351 ```

## Input Arguments

collapse all

Arithmetic used in the filter analysis, specified as `'double'`, `'single'`, or `'Fixed'`. When the arithmetic input is not specified and the filter System object is unlocked, the analysis tool assumes a double-precision filter. When the arithmetic input is not specified and the System object is locked, the function performs the analysis based on the data type of the locked input.

The `'Fixed'` value applies to filter System objects with fixed-point properties only.

When the `'Arithmetic'` input argument is specified as `'Fixed'` and the filter object has the data type of the coefficients set to `'Same word length as input'`, the arithmetic analysis depends on whether the System object is unlocked or locked.

• unlocked –– The analysis object function cannot determine the coefficients data type. The function assumes that the coefficients data type is signed, has a 16-bit word length, and is auto scaled. The function performs fixed-point analysis based on this assumption.

• locked –– When the input data type is `'double'` or `'single'`, the analysis object function cannot determine the coefficients data type. The function assumes that the data type of the coefficients is signed, has a 16-bit word length, and is auto scaled. The function performs fixed-point analysis based on this assumption.

To check if the System object is locked or unlocked, use the `isLocked` function.

When the arithmetic input is specified as `'Fixed'` and the filter object has the data type of the coefficients set to a custom numeric type, the object function performs fixed-point analysis based on the custom numeric data type.

## Output Arguments

collapse all

State matrix, returned as an N-by-N matrix, where N is the filter order.

Data Types: `double`

Input matrix, returned as an N-by-1 column vector, indicating that the number of inputs to the linear system is 1. N is the filter order.

Data Types: `double`

Output matrix, returned as a 1-by-N row vector, indicating that the number of outputs of the linear system is 1. N is the filter order.

Data Types: `double`

Feedthrough matrix, returned as a scalar, indicating that the number of inputs and outputs of the linear system is 1.

Data Types: `double`

### Topics

Introduced in R2011a

Watch now