二维数据使用To Workspace输出到工作空间并绘制图像
问题需求

- 如上图所示, 状态变量 x 1 ˙ , x 2 ˙ \dot{x_1}, \dot{x_2} x1˙,x2˙经过积分器后是一个二维向量;
- 现在需要将 x 1 , x 2 x_1, x_2 x1,x2输出到工作空间并绘制 ( x 1 , x 2 ) (x_1, x_2) (x1,x2).
To Workspace模块
To Workspace 模块将连接到其输入端口的数据从 Simulink®模型记录到工作区.
添加该模块到Simulink模块中

To Workspace模块相关参数

- 变量名称(Variable name): 仿真结束后, MATLAB工作区将会生成一个变量
out.simout

-
将数据点限制为最后(Limit data points to last)
- inf表示保存所有仿真数据;
- 如果填写数字1000, 表示只保存最后1000个数据点;
- 当仿真时间很长, 数据很多, 而前面的数据没有必要时, 可以设置该参数;
-
抽取(Decimation)
- 设置为1, 表示不抽样, 每1个数据保存1个;
- 如果设置为10, 则表示, 每10个数据保存1个;
- 如果数据量太大, 该操作可以降采样;
-
保存格式(Save format)
- MATLAB有四种数据保存格式:
- Structure With Time 带时间的结构体
- Structure 结构体
- Array 数组
- Timeseries 时间序列
- MATLAB有四种数据保存格式:

数据保存格式可详见
MATLAB四种存储结构
Structure With Time
matlab
simout.time
simout.signals.values
Structure
matlab
simout.signals.values
Array
matlab
simout
Timeseries
matlab
simout.Time
simout.Data
-
将数据记录为 fi 对象
- 只有在使用Fixed Point定点数时才有意义
-
采样时间
- -1表示基层输入信号的采样时间;
使用To Workspace接收二维数据得到的结果

out.simout.Data是一个三维数据, 需要转化为一维数据才可以进行绘图操作
matlab
% 将三维数据压缩为1维数据
x1 = squeeze(out.simout.Data(1,1,:));
x2 = squeeze(out.simout.Data(2,1,:));
plot(x1, x2)
绘制结果如下所示
