主要内容

使用大数据进行模拟

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

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

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

  • 运行多个或并行模拟

要使用大数据进行模拟,将数据存储到一个MAT文件中。使用大数据技术进行模拟,需要在数据足够小以适应工作区内存时所做的额外步骤。在开发模型时,考虑不使用持久存储,就可以记录和加载模拟数据,除非您使用。发现您的模型具有超负荷内存的大数据需求。

大数据工作流

此示例是一个高级工作流,用于处理一个仿真生成的大数据,另一个仿真将其用作输入。有关主要工作流任务的更多详细信息,请参阅:

提示

此示例使用模拟数据存储对象,用于将数据流式传输到模型中。或者,您可以流式传输DatasetRef对象直接导入到模型中。

  1. 配置两个模型以记录多个信号。

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

    sim(mdl1,“日志文件”,“开”,“LoggingFileName”,“data1.mat”); sim(mdl2,“日志文件”,“开”,“LoggingFileName”,“数据2.mat”);

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

    在模拟过程中,您记录到持久性存储的数据以小数据块的形式传输,以最大限度地减少内存需求。数据存储在一个包含数据集每组记录数据的对象(例如,罗格苏特xout).

  3. 创造DatasetRef物体(dsr1dsr2)用于记录的特定信号集。然后创造模拟数据存储物体(dst1dst2)对于DatasetRef这个示例代码创建一个模拟数据存储对于第12个元素罗格苏特对于第一个模拟。对于第二个模拟,示例代码创建一个值为模拟数据存储对象的第七个元素罗格苏特。您可以使用大括号编制索引。

    dsr1=Si万博1manbetxmulink.SimulationData.DatasetRef(“data1.mat”,“logsout”);dsr2=Sim万博1manbetxulink.SimulationData.DatasetRef(“数据2.mat”,“logsout”); dst1=dsr1{12};dst2=dsr2{7};
  4. 使用模拟数据存储对象作为另一个模拟的外部输入。要加载模拟数据存储数据,将其包含在数据集数据存储输入是从MAT文件增量加载的。第三个输入是时间序列对象,它作为一个整体加载到内存中,而不是增量加载。

    input=Si万博1manbetxmulink.SimulationData.Dataset;input{1}=dst1;input{2}=dst2;ts=timeseries(rand(5,1),1,“姓名”,“随机信号”);输入{3}=ts;sim(mdl3,“外部输入”,“输入”);
  5. 使用MATLAB®大数据分析与模拟数据存储对象。创建一个时间表通过读取模拟数据存储反对阅读函数读取部分数据readall函数读取所有数据。

    tt=dst1.Values.read;
  6. 将MATLAB会话设置为全局执行环境(地图还原器)为了和高个子一起工作时间表. 创造一个高时间表模拟数据存储对象并读取时间表具有内存中数据的对象。

    mapreducer(0);ttt=高(dst1.值);

提示

有关显示如何使用大型模拟数据的另一个示例,请参见与大数据合作.

另见

功能

相关话题