主要内容

处理大数据的模拟

仿真模型的许多步骤和时间信号可能涉及大数据的内存太大了,适合你的电脑。这种情况包括:

  • 日志记录仿真数据(信号记录、输出端口日志和状态日志)

  • 加载模拟输入信号数据模型

  • 运行多个或并行模拟

为模拟处理大数据,将数据存储在MAT-file持久性存储。使用大数据技术的模拟数据时需要额外的步骤超出你足够小,适合在空间记忆。当你开发一个模型,考虑加载仿真数据日志记录和不使用持久性存储,除非你发现你的模型有很大的过载内存的数据需求。

大数据的工作流

这个例子是一个高级工作流处理大数据,一个模拟生产和另一个模拟使用作为输入。关于主要的工作流任务的更详细的信息,见:

提示

这个示例使用SimulationDatastore对象流数据模型。或者,您可以流DatasetRef直接对象到一个模型。

  1. 配置两个模型来记录一些信号。

  2. 模拟模型,记录每个模型的数据持久存储。

    sim (mdl1“LoggingToFile”,“上”,“LoggingFileName”,“data1.mat”);sim (mdl2“LoggingToFile”,“上”,“LoggingFileName”,“data2.mat”);

    日志记录,涉及大数据需要保存数据持久存储作为v7.3 MAT-file。只有登录的数据数据集格式保存到文件中。数据登录其他格式,比如结构随着时间的推移保存在内存中,基本工作空间。

    持久存储的数据日志是流在小块仿真,以减少内存需求。存储在一个文件,其中包含的数据数据集为每个组记录数据对象(例如,logsoutxout)。

  3. 创建DatasetRef对象(dsr1dsr2)为特定组记录信号。然后创建SimulationDatastore对象(dst1dst2)的元素的值DatasetRef对象。这个示例代码创建了一个SimulationDatastore12日的元素logsout第一模拟。对于第二个模拟,示例代码创建一个信号值是SimulationDatastore第七的元素对象logsout。您可以使用花括号为索引。

    dsr1 = Simulink.SimulationData.DatasetRef (“data1.mat”,“logsout”);dsr2 = Simulink.SimulationData.DatasetRef (“data2.mat”,“logsout”);dst1 = dsr1 {12};dst2 = dsr2 {7};
  4. 使用SimulationDatastore另一个仿真的对象作为外部输入。加载SimulationDatastore数据,包括它数据集对象。数据存储的输入是逐步从MAT-file加载。第三个输入是一个timeseries对象,该对象加载到内存作为一个整体,而不是增量。

    输入= Simulink.SimulationData.Dataset;输入{1}= dst1;输入{2}= dst2;ts = timeseries(兰德(5、1),1,“名字”,“RandomSignals”);输入{3}= t;sim (mdl3“ExternalInput”,“输入”);
  5. 使用MATLAB®大数据分析的工作SimulationDatastore对象。创建一个时间表通过阅读对象的值SimulationDatastore对象。的函数读取数据的一部分。的readall函数读取所有数据。

    tt = dst1.Values.read;
  6. MATLAB会话设置为全球执行环境(mapreduce)用于处理高时间表。创建一个高时间表从一个SimulationDatastore对象和阅读时间表与内存中的数据对象。

    mapreduce (0);到达目标时间=高(dst1.Values);

提示

另一个例子显示如何使用大模拟数据,看看处理大数据

另请参阅

功能

相关的话题

Baidu
map