主要内容

与模拟大数据合作

模拟具有许多时间步长和信号的模型可能涉及大数据,这些数据太大,无法装入计算机的RAM中。这种情况包括:

  • 日志模拟数据(信号日志、输出端口日志和状态日志)

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

  • 运行多个或并行模拟

为了使用大数据进行模拟,将数据存储到一个MAT-file中的持久存储中。使用大数据技术进行模拟需要额外的步骤,而不是当数据足够小,可以放入工作空间内存时所做的。在开发模型时,可以考虑在不使用持久存储的情况下记录和加载模拟数据,除非你发现模型有使内存过载的大数据需求。

大数据的工作流

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

提示

这个例子使用了一个SimulationDatastore对象,用于将数据流到模型中。或者,您可以流DatasetRef对象直接进入模型。

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

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

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

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

    你记录到持久存储的数据在模拟过程中以小块的形式流化,以最小化内存需求。数据存储在一个文件中,其中包含数据集对象的每一组记录数据(例如,logsoutxout)。

  3. 创建DatasetRef对象(dsr1dsr2)为特定的记录信号集。然后创建SimulationDatastore对象(dst1dst2的元素的值DatasetRef对象。这个示例代码创建了一个SimulationDatastore的第12个元素logsout第一个模拟。对于第二个模拟,示例代码创建了一个值为a的信号SimulationDatastore的第7个元素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文件中增量加载的。第三个输入是atimeseries对象,它作为一个整体加载到内存中,而不是增量加载。

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

    tt = dst1.Values.read;
  6. 将MATLAB会话设置为全局执行环境(mapreduce),适合和高个子一起工作时间表。创建一个高时间表从一个SimulationDatastore对象,并阅读时间表具有内存中数据的对象。

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

提示

另一个展示如何处理大仿真数据的例子,请参见与大数据合作

另请参阅

功能

相关的话题

Baidu
map