主要内容

State-Space

将连续线性系统建模为显式状态空间方程组

  • State-Space block

库:
Simulink / Continuous

描述

State-Space 模块将线性系统建模为以显式形式表示的常微分方程组:

x˙=Ax+Buy=Cx+Dux|t=t0=x0,

其中:

  • x 是状态向量。

  • u 是输入向量。

  • y 是输出向量。

  • x0 是系统的初始条件,它提供状态向量的初始值。

  • ABCD 是包含系统方程中各项系数的矩阵。

您可以使用 State-Space 模块对时不变和时变线性隐式系统进行建模。

  • 要对时不变系统建模,请将 ABCD 参数指定为常量矩阵。

  • 要对时变系统建模,请在仿真期间调节 ABCD 参数。

要对连续线性隐式系统建模,请使用 Descriptor State-Space 模块。

指定系统矩阵

要对您的系统建模,请使用 ABCD 参数指定系统矩阵。您可以指定稀疏矩阵或满矩阵。默认情况下,MATLAB® 创建满矩阵。有关详细信息,请参阅构造稀疏矩阵

  • 要将满矩阵转换为稀疏矩阵,请使用 sparse 函数。

  • 要将稀疏矩阵转换为满矩阵,请使用 full 函数。

  • 要确定矩阵是否为稀疏矩阵,请使用 issparse 函数。

系统中的状态数、输入数和输出数确定系统矩阵的维度。

  • A - n×n,其中 n 是系统中的状态数。

  • B - n×m,其中:

    • n 是系统中的状态数。

    • m 是系统输入数。

  • C - r×n,其中:

    • r 是系统输出数。

    • n 是系统中的状态数。

  • D - r×m,其中:

    • r 是系统输出数。

    • m 是系统输入数。

图像显示系统矩阵的维度如何相互关联。

Diagram of system matrices arranged such that common dimensions are adjacent.

示例

全部展开

自治线性系统没有输入。当您实现自治线性系统时,模块充当源模块。

要对自治线性系统建模,请将 BD 参数指定为空矩阵。

该模块实现具有以下形式的方程的方程组:

x˙=Axy=Cxx|t=t0=x0.

扩展示例

端口

输入

全部展开

输入值必须为实数。输入信号的维度必须与系统输入数匹配。

  • 当系统有一个输入时,连接一个标量信号。

  • 当系统有多个输入时,连接一个向量信号,每个系统输入在其中都有一个对应的元素。

依赖关系

此端口在以下情况下具有直接馈通:

  • 直接馈通参数设置为 True 时。

  • 直接馈通参数设置为 Auto 并且软件确定该模块具有直接馈通时。

数据类型: double

输出

全部展开

输出信号的维度与系统输出数匹配。

  • 当系统有一个输出时,该模块生成一个标量信号。

  • 当系统有多个输出时,该模块生成一个向量信号,每个系统输出在其中都有一个对应的元素。

数据类型: double

参数

全部展开

指定一个矩阵,该矩阵:

  • 仅包含实数值。

  • 维度为 n×n,其中 n 是系统中的状态数。

编程用法

要以编程方式设置模块参数值,请使用 set_param 函数。

要以编程方式获取模块参数值,请使用 get_param 函数。

参数: A
值: '1' (默认) | scalar | vector | matrix
数据类型: string | char

示例: set_param("MyModel/State-Space",A="[1 2;3 4]")

指定一个矩阵,该矩阵:

  • 仅包含实数值。

  • 维度为 n×m,其中 n 是系统中的状态数,m 是系统输入数。

编程用法

要以编程方式设置模块参数值,请使用 set_param 函数。

要以编程方式获取模块参数值,请使用 get_param 函数。

参数: B
值: '1' (默认) | scalar | vector | matrix
数据类型: string | char

示例: set_param("MyModel/State-Space",B="[1 2]")

指定一个矩阵,该矩阵:

  • 仅包含实数值。

  • 维度为 r×n,其中 r 是系统输出数,n 是系统中的状态数。

编程用法

要以编程方式设置模块参数值,请使用 set_param 函数。

要以编程方式获取模块参数值,请使用 get_param 函数。

参数: C
值: '1' (默认) | scalar | vector | matrix
数据类型: string | char

示例: set_param("MyModel/State-Space",C="[3 4]")

指定一个矩阵,该矩阵:

  • 仅包含实数值。

  • 维度为 r×m,其中 r 是系统输出数,m 是系统输入数。

编程用法

要以编程方式设置模块参数值,请使用 set_param 函数。

要以编程方式获取模块参数值,请使用 get_param 函数。

参数: D
值: '1' (默认) | scalar | vector | matrix
数据类型: string | char

示例: set_param("MyModel/State-Space",D="5")

要初始化系统,请指定系统中状态的初始值。状态不能具有 InfNaN 值。

编程用法

要以编程方式设置模块参数值,请使用 set_param 函数。

要以编程方式获取模块参数值,请使用 get_param 函数。

参数: InitialCondition
值: '0' (默认) | scalar | vector | matrix
数据类型: string | char

示例: set_param("MyModel/Descriptor State-Space",InitialCondition="[2 3]")

此外,还可以使用 X0

要对时变系统建模,您可以在仿真期间调节系统矩阵参数。此参数指定软件如何在已编译模型或进行加速和快速加速仿真的仿真目标中表示系统矩阵参数。

  • 自动 - 软件通过分析系统矩阵来确定如何表示可调参数。

  • 优化 - 软件针对仿真执行优化参数表示。

    此选项可提高性能,但会对您在仿真期间调节参数时可指定的值施加额外限制。

  • 无约束 - 软件不会针对仿真执行优化参数表示。

    此选项对您在仿真期间调节参数时可指定的值施加的限制最少。

当您调节系统矩阵参数时,可指定的值取决于此参数的值以及系统矩阵的初始值是指定为稀疏矩阵还是满矩阵。

初始矩阵参数值优化参数可调性无约束参数可调性
稀疏矩阵

矩阵模式是固定的。只有初始矩阵中具有非零值的元素是可调的。

矩阵模式可以更改,但矩阵中非零元素的数量无法增加。

满矩阵

矩阵模式可以更改,但矩阵中非零元素的数量无法增加。

矩阵的所有元素都可以更改。

依赖关系

要在初始参数值为 0 时在仿真期间调节 D 参数,请启用允许最初指定为零的 D 矩阵具有非零值

要使用 Parameter Writer 模块调节系统矩阵,请将参数指定为满矩阵。

编程用法

要以编程方式设置模块参数值,请使用 set_param 函数。

要以编程方式获取模块参数值,请使用 get_param 函数。

参数: ParameterTunability
值: 'Auto' (默认) | "Optimized" | "Unconstrained"

示例: set_param("MyModel/State-Space",ParameterTunability="Optimized")

默认情况下,如果初始值为 0,则您无法在仿真期间调节 D 参数。选中此参数可在初始值为 0 时在仿真期间支持调节 D 参数。

依赖关系

当您启用此参数时,模块具有直接馈通。

编程用法

要以编程方式设置模块参数值,请使用 set_param 函数。

要以编程方式获取模块参数值,请使用 get_param 函数。

参数: AllowTunableDMatrix
值: 'off' (默认) | "on"

示例: set_param("MyModel/State-Space",AllowTunableMatrix="Optimized")

在选择步长时,变步长求解器使用绝对和相对容差来确定状态计算中的误差是否可接受。此参数指定用于在此模块实现的系统中状态的绝对容差。

  • auto - 使用绝对容差配置参数指定的绝对容差。

  • 实数正标量 - 将指定值用作所有状态的绝对容差。

  • 实数正向量 - 为每个状态指定绝对容差。向量中的元素数必须与系统中的状态数相同。

编程用法

要以编程方式设置模块参数值,请使用 set_param 函数。

要以编程方式获取模块参数值,请使用 get_param 函数。

参数: AbsoluteTolerance
值: 'auto' (默认) | "-1" | positive real scalar | positive real vector
数据类型: string | char

示例: set_param("MyModel/Descriptor State-Space",AbsoluteTolerance="-1")

如果您没有为系统中的每个状态指定自定义名称:

  • 每个指定的名称用于多个状态。

  • 状态数必须能被指定名称的数量整除。

例如,如果系统有四个状态,您必须指定一个、两个或四个名称。如果您指定两个名称,则前两个状态使用第一个名称,后两个状态使用第二个名称。

要使用属性检查器或“模块参数”对话框指定单个自定义状态名称,请在名称两边加上单引号 ('')。例如,要指定名称 position,请输入 'position'。如果省略单引号,软件会将该值解释为 MATLAB 变量的名称。

要使用默认状态名称,请将此参数指定为空字符向量 ('')。

编程用法

要以编程方式设置模块参数值,请使用 set_param 函数。

要以编程方式获取模块参数值,请使用 get_param 函数。

参数: ContinuousStateAttributes
值: '' (默认)
数据类型: char | cell

示例: set_param("MyModel/Descriptor State-Space",ContinuousStateAttributes={'position','velocity'})

模块特性

数据类型

double

直接馈通

多维信号

可变大小信号

过零检测

扩展功能

全部展开

版本历史记录

在 R2006a 之前推出