主要内容

将数据记录到持久存储

何时登录到持久存储

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

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

如果你使用数据集日志格式,您可以将这些类型的数据记录到持久存储:

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

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

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

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

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

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

登录到持久存储的限制

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

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

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

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

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

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

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

    您可以使用其中一种或多种技术来限制工作空间中存储的模拟数据量。详细信息请参见为日志指定信号值

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

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

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

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

    • 每个信号的方法会使模型变得混乱吗到文件块连接到单独的信号。

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

日志到持久存储

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

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

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

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

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

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

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

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

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

  6. 模拟模型。

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

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

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

  • SignalLogging

  • SaveState

  • SaveFinalState

  • SaveOutput

  • DSMLogging

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

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

如何存储模拟数据

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

数据集文件中的对象名称是用于日志记录的变量的名称。例如,如果您使用默认的信号记录变量logsout,数据集MAT-file中的对象为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模拟论证

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

另请参阅

功能

相关的话题