**Block Category:** Linear System

**Description:** The stateSpace block is used to
represent a multi-input multi-output linear system in state-space form. The
state-space matrices can be specified in the following ways:

•**As an M file created with Embed:** The Analyze > Linearize
command generates ABCD state-space matrices from a nonlinear system by
numerically evaluating the matrix perturbation equations at the time the
simulation was halted. For more information, see Generating ABCD state-space
matrices.

•**As an M file created with a text editor:** When you create an M file
with a text editor, follow these rules: start each matrix on a new line; enclose
matrix elements in square brackets and terminate with a semi-colon; separate
matrix elements with spaces; separate matrix rows with semi-colons.

The following is an example of a user-written M file:

function [a,b,c,d] =vabcd

a = [-.396175 -1.17336 ; 5.39707 .145023 ];

b = [-.331182 ; -1.08363 ];

c = [0 1 ];

d = [0 ];

Note that MATLAB commands other than array initialization are not allowed.

•**As a MAT file created with MATLAB:** Generating MAT files is
described in the MATLAB documentation. Note that when you save the abcd matrices to a file, the names of
the matrices are not important; however, the order in which they appear is.

•**As matrix data entered directly into the stateSpace block**

When you simulate the block diagram, Embed numerically solves the stateSpace block.

Embed supports state-space systems up to the 90th order.

**Code Generation:** When generating code for C2000 or
ARM Cortex targets and you include one or more stateSpace blocks in your diagram
and you activate Check for Performance Issues in the Code Generation dialog box,
Embed warns you that large RAM blocks are not supported for the target. You can
continue with code generation; however, the generated code may not fit in the
target RAM and the code will run slower.

When generating code for Arduino or MSP430 targets, you cannot include stateSpace blocks in your diagram. Embed halts code generation and issues a message to replace the block.

**A B C D:** Lets you enter a value as a matrix
expression|topic=Entering matrix expressions .

**Initial State:** Specifies initial values for the
states in the block. The values are right-adjusted. The right-most value
corresponds to the lowest order state. Unspecified states are set to 0.

**Inputs:** Specifies the number of inputs to the block.
This is a read-only field.

**File:** Specifies the name of the M or MAT file to be used as
input to the stateSpace block. If you do not know the name, click **Select
File** to find it. To open the specified file with the default text editor, click
**Browse Data**.

**Outputs:** Specifies the number of outputs from the
block. This is a read-only field.

**Direct Matrix Entry:** Lets
you enter the matrix data directly to the **A, B, C** and **D**
parameters.

**Discrete:** Indicates a
discrete Z-domain system. Enter the time step for the discrete transfer function
in the dT box. By default, this parameter is de-activated, which indicates a
continuous transfer function.

**dT:** Specifies the time step
for the discrete system. By default, Embed uses step size parameter from the
**System > System Properties** dialog box.

**.MAT File:** Indicates that
the system is to be specified as a MAT file. Specify the name of the MAT file in
the **.mat/.m File** parameter.

**.M
File:** Indicates that the system is to be
specified as a M file. Specify the name of the M file in the .**mat/.m File**
parameter.

**States:** Specifies the number of system states. The
number of system states is determined by the size of the A matrix. This is a
read-only field.