State-Space
实现线性状态空间系统
库:
Simulink /
Continuous
描述
State-Space 模块可实现具有您定义的如下行为的系统:
其中 x 是状态向量,u 是输入向量,y 是输出向量,x0 是状态向量的初始条件。A、B、C、D 矩阵可以指定为稀疏矩阵或稠密矩阵。矩阵系数必须具有以下特征:
A 必须是 n×n 矩阵,其中 n 是状态的数量。
B 必须是 n×m 矩阵,其中 m 是输入的数量。
C 必须是 r×n 矩阵,其中 r 是输出的数量。
D 必须是 r×m 矩阵。
一般情况下,模块有一个输入端口和一个输出端口。C 或 D 矩阵中的行数与输出端口的宽度相同。B 或 D 矩阵中的列数与输入端口的宽度相同。如果您要建立不带任何输入端口的自治线性系统模型,请将 B 和 D 设置为空矩阵。在这种情况下,模块相当于没有输入端口但有一个输出端口的源模块,并实现以下系统:
Simulink® 软件可将包含零值的矩阵转换为稀疏矩阵,以提高乘法运算的效率。
示例
端口
参数
A — 矩阵系数,A
1
(默认) | 标量 | 向量 | 矩阵 | 稀疏矩阵
将矩阵系数 A
指定为实数值 n×n 矩阵,其中 n 是状态的数量。有关矩阵系数的详细信息,请参阅描述。
编程用法
模块参数:A |
类型:字符向量、字符串 |
值: 标量 | 向量 | 矩阵 | 稀疏矩阵 |
默认值:'1' |
B — 矩阵系数,B
1
(默认) | 标量 | 向量 | 矩阵 | 稀疏矩阵
将矩阵系数 B
指定为实数值 n×m 矩阵,其中 n 是状态的数量,m 是输入的数量。有关矩阵系数的详细信息,请参阅描述。
编程用法
模块参数:B |
类型:字符向量、字符串 |
值: 标量 | 向量 | 矩阵 | 稀疏矩阵 |
默认值:'1' |
C — 矩阵系数 C
1
(默认) | 标量 | 向量 | 矩阵 | 稀疏矩阵
将矩阵系数 C 指定为实数值 r×n 矩阵,其中 r 是输出的数量,n 是状态的数量。有关矩阵系数的详细信息,请参阅描述。
编程用法
模块参数:C |
类型:字符向量、字符串 |
值: 标量 | 向量 | 矩阵 | 稀疏矩阵 |
默认值:'1' |
D — 矩阵系数 D
1
(默认) | 标量 | 向量 | 矩阵 | 稀疏矩阵
将矩阵系数 D 指定为实数值 r×m 矩阵,其中 r 是输出的数量,m 是输入的数量。有关矩阵系数的详细信息,请参阅描述。
编程用法
模块参数:D |
类型:字符向量、字符串 |
值: 标量 | 向量 | 矩阵 | 稀疏矩阵 |
默认值:'1' |
初始条件 — 初始状态向量
0
(默认) | 标量 | 向量
指定初始状态向量。
限制
此模块的初始条件不能为 inf
或 NaN
。
编程用法
模块参数:X0
|
类型:字符向量、字符串 |
值:标量 | 向量 |
默认值:'0' |
参数可调性 — 选择模块参数的可调表示
Auto
(默认) | Optimized
| Unconstrained
使用 Simulink Compiler™ 的加速仿真模式和部署仿真的状态空间矩阵(A、B、C 和 D)的可调性级别。当设置为自动时,Simulink 会选择适当的参数可调性级别。
对于稀疏矩阵系数,将参数设置为优化允许对非零元素进行调整,同时保持非零元素的模式和数量不变。将此参数设置为无约束则允许对所有元素进行调整,前提是非零元素的数量保持不变,即您可以更改稀疏矩阵的模式。
对于稠密矩阵系数,选择优化允许对所有矩阵元素进行调整,前提是矩阵中最初指定的非零元素数量保持不变。将此参数设置为无约束允许对所有矩阵元素进行全部调整。
注意
当 D = 0 时,要调整模块的 D 矩阵,则必须启用允许最初指定为零的 D 矩阵具有非零值参数。
编程用法
模块参数:ParameterTunability
|
类型:字符向量 | 字符串 |
值:'Auto' | 'Optimized' | 'Unconstrained' |
默认值:'Auto' |
允许最初指定为零的 D 矩阵具有非零值 — 当 D = 0 时允许调整 D 矩阵
off
(默认) | on
启用此参数将支持对 D 进行调整,即使 D = 0 也是如此。
注意
启用此参数会启用 State-Space 模块的直接馈通。
编程用法
模块参数:AllowTunableDMatrix
|
类型:字符向量 | 字符串 |
值:'off' | 'on' |
默认值:'off' |
绝对容差 — 用于计算模块状态的绝对容差
auto
(默认) | 标量 | 向量
变步长求解器在选择步长时使用绝对和相对容差来确定状态计算中的误差是否可接受。
要从绝对容差配置参数继承绝对容差,请将此参数值指定为 auto
或 -1
。
要为此模块指定一个绝对容差来覆盖为绝对容差配置参数指定的值,请执行以下操作:
输入用于计算所有模块状态的正实数标量值。
输入实数向量,其维度与模块的连续状态的维度匹配。
编程用法
模块参数: AbsoluteTolerance |
类型:字符串 | 字符向量 |
值:'auto' | '-1' | 正实数标量 | 正实数标量的向量 |
默认值:'auto' |
状态名称(例如,'position') — 用于为各状态指定唯一名称的选项
' '
(默认) | 字符向量 | 字符向量元胞数组 | MATLAB® 变量 | ...
使用此参数可选择为此模块的状态指定名称。您指定的名称仅应用于此模块的状态。
要使用默认状态名称,请将此字段留空 (
''
)。要为单个状态分配单个名称,请输入名称并用引号引起来。例如,要命名单一状态
position
,请输入"position"
。要为多个状态指定名称,请将此参数值指定为字符向量元胞数组。元胞数组中的每个名称必须唯一。例如,要指定名称
a
、b
和c
,请输入{'a','b','c'}
。要使用 MATLAB 变量指定名称,请输入不带引号的变量名称。例如,要使用变量
names
来指定状态名称,请输入names
。
您指定的名称数量可以少于模块中的状态数量。在这种情况下,状态名称用于多个状态,状态的数量必须能够被状态名称的数量均分。例如,当您为具有四个状态的模块指定两个名称时,第一个名称用于前两个状态,第二个名称用于后两个状态。
编程用法
模块参数:ContinuousStateAttributes |
类型:字符串 | 字符向量 |
值:' ' | 用户定义 |
默认值:' ' |
模块特性
数据类型 |
|
直接馈通 |
|
多维信号 |
|
可变大小信号 |
|
过零检测 |
|
扩展功能
C/C++ 代码生成
使用 Simulink® Coder™ 生成 C 代码和 C++ 代码。
不建议用于生产级的代码。涉及到嵌入式系统中常见的资源限制以及对速度和内存的限制。生成的代码可以包含内存的动态分配和释放、递归、额外的内存开销以及长短不等的执行时间。虽然代码在功能上有效并且在资源丰富的环境中通常可接受,但较小的嵌入式目标通常不能支持此类代码。
通常,考虑使用 Simulink 模型离散化器将连续模块映射到支持生产代码生成的离散等效模块。要启动模型离散化器,请在 Simulink 编辑器中,在 App 选项卡上,在 App 下,在控制系统下,点击模型离散化器。一个例外是 Second-Order Integrator 模块,因为对于该模块,模型离散化器产生近似离散化。
版本历史记录
在 R2006a 之前推出
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)