主要内容

将数据记录为持久存储

何时记录到持久化存储

在某些情况下,日志记录仿真数据可以创建大量的数据,该数据对于计算机持有运行内存的计算机太大,同时也有效运行。这种情况可以包括仿真,这些模拟具有许多信号,使用许多时间步长运行的仿真,以及并行仿真。当您的仿真配置创建大量数据时,您可以将该数据记录到持久存储,而不是将其记录到工作内存中。

您可以将记录的仿真数据存储到Mat文件中的持久存储。您可以在模型级别控制以持久存储的日志记录。您可以通过更改一个型号配置参数来启用和禁用该功能(日志数据集数据到文件)不改变模型布局。

如果你使用数据集日志的格式,你可以记录每一种类型的数据到持久存储:

  • 信号测井-用途数据集格式。

  • 状态-默认为数据集格式。您可以使用其他格式。

  • 最后状态-要求你清除保存最终工作点范围

  • 输出 - 默认为数据集格式。

  • 数据存储 - 用途数据集格式。

默认情况下,将日志记录到持久存储是禁用的,因此记录的数据存储在MATLAB中®工作区。对于大多数模型,登录到工作区更简单,因为它避免了加载和保存日志文件。与访问记录到内存中的数据相比,访问记录到持久存储中的数据需要一些额外的步骤。对于较短的模拟,记录到MATLAB工作空间比记录到持久化存储可能更快,并且可能使用更少的内存。

日志记录到持久存储的限制

  • 只有数据登录数据集格式存储在mat文件中。以其他格式记录的数据存储在MATLAB工作空间中。

  • 要使用持久存储来记录最终状态数据,无法启用配置参数>数据导入/导出+保存最终工作点

  • Simulation Stepper和快速重启不支持将日志记录到持久存储。万博1manbetx

  • 在仿真期间,无法将数据从持久存储文件中的数据直接加载到模型中。创建引用文件中数据的对象,然后加载引用对象。

减少记录内存使用情况的替代方法

当您需要模拟一个创建大量数据的模型,并且不希望将模拟数据记录到持久存储时,请考虑使用这些替代方法之一。

  • 限制工作区中存储的模拟数据的数量。

    您可以使用这些技术中的一种或多种来限制工作区中存储的模拟数据的数量。有关详细信息,请参见指定日志的信号值

    技术 描述
    指定抽取因子 导出数据时跳过样本。
    限制数据点 限制保存的样本数量只是最近的样本。
    指定日志记录的间隔 指定日志记录的时间步骤范围。

    如果您限制了工作空间中存储的模拟数据的数量,那么记录的数据可能不包含一些对于测试和分析模型至关重要的时间步骤。

  • 用一个到文件块为您要记录的每个信号。

    连接A.到文件块到要记录的信号存储在MAT文件中的记录数据,而不是在MATLAB工作区中。但是,这种方法:

    • 是一种每次信号方法,可以混乱多个模型到文件附加到各个信号的块。

    • 为每个文件创建单独的mat文件到文件块,而不是日志持久存储时创建的单个文件。

日志到持久存储

  1. 指定要执行的日志记录类型(例如,信号记录和输出记录)以及日志记录数据的变量名称。

  2. 在模型图中,标记为信号日志记录的选定信号。

  3. 数据集记录数据的格式。以任何其他格式记录的数据都存储在工作区中。

    • 信号记录和数据存储记录的使用数据集格式。输出、状态和最终状态日志记录的默认格式是数据集

    • 对于最终状态日志,清除保存最终工作点配置参数。

  4. 启用到持久存储的日志记录,并指定输出mat文件名。

    • 选择日志数据集数据到文件配置参数。

    • 指定要使用的mat文件。不要在另一个区域设置中使用来自一个区域设置的文件名。

  5. 保存已记录的数据集数据使用timeseries或者时间表元素,设置数据集信号格式配置参数。默认格式为timeseries.的时间表格式有助于MATLAB组合来自多种模拟的记录数据。有关的详细信息时间表格式,参见数据集信号格式

  6. 模拟模型。

以编程方式启用记录以持久存储

您可以以编程方式记录持久存储。要启用日志记录持久存储,请使用loggingTofile.LoggingFileName的名称-值对sim卡命令或set_param.命令。

要启用想要使用的日志记录方法,请将这些参数设置为“上”,适用:

  • SignalLogging

  • 豁免

  • 萨维尔斯特州

  • 保存申款

  • dsmlogging.

将输出,状态和最终状态数据记录到持久存储,设置saplformat.参数'dataset'

将最终状态记录到持久存储,设置SaveOperatingPoint'离开'

如何存储仿真数据

日志记录到持久存储将在指定的MAT文件中保存记录的模拟数据。数据存储为一个万博1manbetxsimulink.simulationdata.dataset.用于每种日志记录的对象数据集格式。的数据集元素存储为timeseries或者时间表对象,这取决于如何设置数据集信号格式范围。有关的详细信息时间表格式,参见数据集信号格式

数据集对象名称是用于日志记录的变量的名称。例如,如果使用默认的信号日志记录变量Logsout.,数据集MAT文件中的对象是Logsout.

从连续仿真保存已记录的数据

用于保存连续模拟中记录的数据的方法取决于您是否正在执行并行模拟。

不使用平行模拟

每次你模拟一个模型而不使用并行模拟,Simulink万博1manbetx®覆盖mat文件的内容,除非您在模拟之间更改文件的名称。当你使用万博1manbetxSimulink.SimulationData.DatasetRef引用Mat文件中的数据以检索文件中的数据,它检索数据的最新版本。要从早期仿真中保留数据,请使用其中一种方法:

  • 在模拟之间,使用配置参数>数据导入/导出窗格为Mat-File指定日志记录的不同名称。

  • 在仿真之间,保存MAT文件的副本。使用与您指定为持久存储的MAT文件的名称不同的文件名,或者移动MAT文件。

  • 以编程方式为每个模拟运行指定一个新文件名。

如果您运行多个与时间重叠的模拟,请为您登录持久存储的每个模型使用唯一的MAT文件。

如果您将用于日志记录的文件名更改为持久存储,那么要访问日志数据,请使用以下方法之一:

  • 创建一个万博1manbetxSimulink.SimulationData.DatasetRef目的。

  • 若要匹配新文件名,请更改位置财产的财产datasetref.对象。

有关使用的详细信息datasetref.对象访问日志数据,请参见为模拟加载大数据

与并行模拟

对于并行仿真,如果您登录到文件,则为其指定输入对象数组,Simulink:万博1manbetx

有关并行仿真的更多信息,请参阅运行多个模拟

另请参阅

功能

相关话题