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.

.mat/.m File

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.

Specification Method

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.