matlab/simulink仿真数据的导出
在用simulink仿真的时候,希望把数据导出,用其他软件进一步分析和处理,该如何做呢?
使用下面这个叫做to workspace的模块就可以实现
1 参数设置
把该模块拖出来。双击打开进行设置,会弹出下面这个框
下面我进行一一介绍。
如果只是最基础的导出数据的需求,直接从1.5小节开始看
1.1 Variable name
变量名。
用这个模块导出的数据会存放在matlab的工作区中,作为一个变量存在。相当于你写matlab的时候给某个变量取的名字。下图是工作区的样子。
这个变量名的意义不大,我一般直接用默认的
1.2 Limit data points to last
导出的数据点的上限值。
比如写了100,即最多保存100个点。如果仿真跑了1000个点,则会保存最后的100个点。
如果要保存所有的点,则填默认值inf
1.3 Decimation
比如设置为4,则每4次采样(参见第1.4节)就导出一次数据。
默认为1,每次采样都导出一次数据。
1.4 Sample time
采样时间,即每隔多久采一次点。
这个在变步长仿真的时候很有用,因为这个模块的采样时间是固定的,而仿真的步长则是不定的。看不懂的就跳过吧,直接设置成-1。
1.5 Save format
数据保存的类型。有很多种选择。这里先写几种常见的。如果你想要用的保存类型没写到可以在底下留言。
1.5.1 所有变量保存在同个变量中(矩阵形式),时间t单独为一个变量
比如我同时保存两个变量。
则最后导出的结果是
其中simout是二维的,存放了我想要保存的A和X
tout则为时间(我用的是变步长仿真,且1.4节的采样时间用的是默认的-1,所以这里的时间t和仿真的步长是一样的,不固定)
1.5.2 timeseries
导出的是时间序列的格式。
1.6 给一个计算的例子
假设有一个仿真,Limit data points to last设置为100,Decimation为3,Sample time为0.5。模块在时间为0 0.5 1.0 1.5 …时收集最多100个点。每隔0.5s采一个点,但数据只保存1.5 3.0 4.5 6.0 …的点。
2 注意事项
- 只有当仿真暂停或停止后,导出的数据才能使用。仿真的过程中是放在缓存里面,看不见的。
- 无论哪种保存类型,最后都会有一个单独的时间变量tout
3 仿真例子
想要同时导出好几个变量?
学习我这样就可以了。左边的叫做from模块,中间的叫做mux模块