Simulink从0搭建模型05-P6模型中数组的使用
- 本节课学习内容
- 1. 数组的创建Mux、Constant
- 1.1. 技巧:显示数据类型和维度的方法
- 2. 数组的切片Demux
- 3. 数组的索引Selector
- 3.1. Index vector(dialog)
- 3.2. Index vector(port)
- 3.3. Starting Index(dialog)
- 3.4. Starting Index(port)
- 3.5. Starting and Ending Indics(port)
- 4. 数组的赋值Assignment
- 4.1. Index vector(dialog)
- 4.2. Index vector(port)
- 4.3. Starting index(dialog)
- 4.4. Starting index(port)
- 5. 数组的简单运算
- 5.1. 加法Add
- 5.2. 乘法Product
- 5.2.1. 点乘
- 5.2.2. 矩阵
本节课学习内容
b站视频【Simulink 0基础入门教程 P6 模型中数组的使用 Mux/Demux/Selector/Assignment】
1. 数组的创建Mux、Constant
- 添加一个Mux模块:默认2输入,双击改为5输入。
- 添加Constant模块作为输入,如下:
- 注意:输入的Constant类型一致才不报错,都设置为Single。
- 另一种输入的表示方式,写在一个Constant模块里面,参数改为:
数据类型设置为double.
把[1X5]拉伸展开为:
说明:以下的输入没显示完整的都是[1 2 3 4 5]
.
1.1. 技巧:显示数据类型和维度的方法
在空白处右键选择"Other Displays"–“Signals & Ports”–“Signal Dimensions"和"Port Data Types”.
2. 数组的切片Demux
加载Demux模块:
自动平分为2个输出,一个维度3,一个维度2。可以手动更改[1 1 3]:
3. 数组的索引Selector
默认的Selector模块:
双击该模块,有不同的Index选择。
3.1. Index vector(dialog)
表示:输入长度为5,索引值为2,3,4,因此显示的是索引值为2,3,4的值。
其他的Index选择:
3.2. Index vector(port)
3.3. Starting Index(dialog)
3.4. Starting Index(port)
是Starting Index(dialog)的另一种表现方式。
3.5. Starting and Ending Indics(port)
Constant模块输入
这里遇到一个bug:
The signal at output port 1 of 'untitled/Selector' is a variable-size signal with a nondiscrete sample time. The sample time for any variable-size signal must be discrete.
报错原因是这是可变长度的信号,打开默认设置参数的Solver的Type是Variable-step
:
把它改为Fixed-step
再次运行就不报错了:
所以博主在前面的课程就讲了,养成好的习惯,开始就把求解器设置好。
4. 数组的赋值Assignment
Index选择有4种。
4.1. Index vector(dialog)
把Index=2的值改为100(原来为2)
4.2. Index vector(port)
更直观的表示出Index,就选用Index vector(port)。
4.3. Starting index(dialog)
同4.1
4.4. Starting index(port)
同4.2
5. 数组的简单运算
5.1. 加法Add
5.2. 乘法Product
5.2.1. 点乘
5.2.2. 矩阵
加一个reshape模块,改成行向量和列向量。
行=row,列=colum
-END-