主要内容

将日志数据保存到持久存储

何时日志到持久存储

在某些情况下,日志模拟数据可能会创建大量的数据,这些数据太大,使计算机无法在工作内存中保存,同时也无法有效地运行。这种情况可能包括记录许多信号的模拟、使用许多时间步骤运行很长时间的模拟和并行模拟。当模拟配置创建大量数据时,可以将该数据记录到持久存储,而不是记录到工作内存。

您可以将记录的模拟数据存储到mat文件的持久存储中。您可以在模型级别控制日志记录到持久存储。您可以通过更改一个模型配置参数(Log数据集到文件),而不改变模型布局。

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

  • 信号记录-用途数据集格式。

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

  • 最终状态-要求您清除保存最终工作点参数

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

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

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

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

  • 仅记录数据数据集格式存储在mat -文件中。以其他格式记录的数据存储在MATLAB工作区中。

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

  • 模拟步进和快速重启不支持记录到持久存储。金宝app

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

减少日志内存使用的替代方法

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

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

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

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

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

  • 使用一个到文件块,用于记录每个信号。

    连接一个到文件将记录的数据存储在mat文件中,而不是在MATLAB工作区中。然而,这种方法:

    • 单个信号的方法会使一个模型与多个信号混淆吗到文件连接到单个信号的块。

    • 为每个文件创建一个单独的MAT-file到文件块,而不是记录到持久存储时创建的单个文件。

日志到持久存储

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

  2. 在模型图中,标记选定的信号进行信号测井。

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

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

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

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

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

    • 指定要使用的mat文件。不要在不同的地区使用来自一个地区的文件名。

  5. 保存记录数据集数据使用timeseries时间表元素,设置数据集信号格式配置参数。默认格式为timeseries.的时间表格式有助于MATLAB结合来自多个仿真的记录数据。有关时间表格式,请参阅数据集信号格式

  6. 模拟模型。

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

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

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

  • SignalLogging

  • SaveState

  • SaveFinalState

  • SaveOutput

  • DSMLogging

要将输出、状态和最终状态数据记录到持久存储中,请设置SaveFormat参数“数据集”

要将最终状态数据记录到持久存储,请设置SaveOperatingPoint“关闭”

模拟数据是如何存储的

记录到持久存储将记录的模拟数据保存在指定的mat -文件中。数据存储为金宝appSimulink.SimulationData.Dataset对象,用于使用的每种日志记录类型数据集格式。的数据集元素以两种方式存储timeseries时间表对象,这取决于您如何设置数据集信号格式参数。有关时间表格式,请参阅数据集信号格式

数据集文件中的Object name是用于日志记录的变量的名称。例如,如果您使用默认的信号日志记录变量logsout,数据集对象为logsout

保存记录的数据从连续的模拟

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

不使用并行模拟

每次你不使用并行仿真Simulink来模拟一个模型金宝app®覆盖mat -文件的内容,除非在模拟之间更改文件的名称。当你使用金宝appSimulink.SimulationData.DatasetRef对象引用mat文件中的数据以检索文件中的数据时,它检索数据的最新版本。为了保存来自早期模拟的数据,可以使用以下方法之一:

  • 在模拟之间,使用配置参数>数据导入/导出窗格以指定用于日志记录的mat文件的不同名称。

  • 在模拟之间,保存一个mat文件的副本。使用与指定的mat文件名称不同的文件名进行持久存储,或者移动mat文件。

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

如果运行多个在时间上重叠的模拟,则为记录到持久存储的每个模型使用唯一的mat -文件。

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

  • 创建一个金宝appSimulink.SimulationData.DatasetRef对象。

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

有关使用的细节DatasetRef对象来访问日志数据,请参见加载大数据模拟

与并行模拟

对于并行模拟,你指定一个输入对象数组,如果你记录到文件,Simulink:金宝app

  • 为每个模拟创建一个mat -文件

  • 创建金宝appSimulink.SimulationData.DatasetRef对象来访问mat文件中的输出数据,并将这些对象包含在SimulationOutput对象数据

  • 使CaptureErrors理由模拟

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

另请参阅

功能

相关的话题