将数据记录到持久存储

何时日志到持久存储

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

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

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

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

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

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

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

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

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

记录到持久性存储的限制

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

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

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

  • 在模拟过程中,无法将数据从永久存储文件直接加载到模型中。请创建引用文件中数据的对象,然后加载引用对象。

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

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

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

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

    技巧 描述
    指定抽取因子 导出数据时跳过示例。
    限制数据点 将保存的样本数限制为仅为最近的样本数。
    指定日志记录的间隔 指定日志记录的时间步长范围。

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

  • 使用到文件为要记录的每个信号设置块。

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

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

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

日志到持久存储

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

  2. 在模型图中,标记所选信号以记录信号。

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

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

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

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

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

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

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

  6. 模拟模型。

以编程方式启用对持久性存储的日志记录

您可以通过编程方式登录到持久性存储。若要启用持久性存储的日志记录,请使用日志文件LoggingFileName的名称-值对sim卡命令或设置参数命令。

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

  • SignalLogging

  • 储蓄国

  • 保存最终状态

  • 保存输出

  • DSM测井

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

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

模拟数据的存储方式

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

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

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

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

不使用并行模拟

每次你不使用并行仿真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模拟论证

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

另请参阅

功能

相关话题