处理大数据的模拟
仿真模型的许多步骤和时间信号可能涉及大数据的内存太大了,适合你的电脑。这种情况包括:
日志记录仿真数据(信号记录、输出端口日志和状态日志)
加载模拟输入信号数据模型
运行多个或并行模拟
为模拟处理大数据,将数据存储在MAT-file持久性存储。使用大数据技术的模拟数据时需要额外的步骤超出你足够小,适合在空间记忆。当你开发一个模型,考虑加载仿真数据日志记录和不使用持久性存储,除非你发现你的模型有很大的过载内存的数据需求。
大数据的工作流
这个例子是一个高级工作流处理大数据,一个模拟生产和另一个模拟使用作为输入。关于主要的工作流任务的更详细的信息,见:
提示
这个示例使用SimulationDatastore
对象流数据模型。或者,您可以流DatasetRef
直接对象到一个模型。
配置两个模型来记录一些信号。
模拟模型,记录每个模型的数据持久存储。
sim (mdl1“LoggingToFile”,“上”,“LoggingFileName”,“data1.mat”);sim (mdl2“LoggingToFile”,“上”,“LoggingFileName”,“data2.mat”);
日志记录,涉及大数据需要保存数据持久存储作为v7.3 MAT-file。只有登录的数据
数据集
格式保存到文件中。数据登录其他格式,比如结构随着时间的推移
保存在内存中,基本工作空间。持久存储的数据日志是流在小块仿真,以减少内存需求。存储在一个文件,其中包含的数据
数据集
为每个组记录数据对象(例如,logsout
和xout
)。创建
DatasetRef
对象(dsr1
和dsr2
)为特定组记录信号。然后创建SimulationDatastore
对象(dst1
和dst2
)的元素的值DatasetRef
对象。这个示例代码创建了一个SimulationDatastore
12日的元素logsout
第一模拟。对于第二个模拟,示例代码创建一个信号值是SimulationDatastore
第七的元素对象logsout
。您可以使用花括号为索引。dsr1 = Simulink.SimulationData.DatasetRef (“data1.mat”,“logsout”);dsr2 = Simulink.SimulationData.DatasetRef (“data2.mat”,“logsout”);dst1 = dsr1 {12};dst2 = dsr2 {7};
使用
SimulationDatastore
另一个仿真的对象作为外部输入。加载SimulationDatastore
数据,包括它数据集
对象。数据存储的输入是逐步从MAT-file加载。第三个输入是一个timeseries
对象,该对象加载到内存作为一个整体,而不是增量。输入= Simulink.SimulationData.Dataset;输入{1}= dst1;输入{2}= dst2;ts = timeseries(兰德(5、1),1,“名字”,“RandomSignals”);输入{3}= t;sim (mdl3“ExternalInput”,“输入”);
使用MATLAB®大数据分析的工作
SimulationDatastore
对象。创建一个时间表
通过阅读对象的值SimulationDatastore
对象。的读
函数读取数据的一部分。的readall
函数读取所有数据。tt = dst1.Values.read;
MATLAB会话设置为全球执行环境(
mapreduce
)用于处理高时间表
。创建一个高时间表
从一个SimulationDatastore
对象和阅读时间表
与内存中的数据对象。mapreduce (0);到达目标时间=高(dst1.Values);
提示
另一个例子显示如何使用大模拟数据,看看处理大数据。
另请参阅
功能
Simulink.SimulationData.Dataset
|timeseries
|Simulink.SimulationData.DatasetRef
|matlab.io.datastore.SimulationDatastore