Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

使用 From File 模块加载数据

要使用 From File 模块将信号数据加载到模型中,请执行下列操作:

  1. 使用要加载的信号数据创建一个 MAT 文件。请参阅为 From File 模块创建数据

  2. 将一个 From File 模块添加到模型。将 From File 模块连接到 From File 所输入到的模块。

  3. 双击 From File 模块并指定:

    • 要从中加载数据的文件的路径

    • From File 模块输出的数据格式

    • 如何加载数据,包括采样时间、如何处理缺失数据点的数据,以及是否使用过零检测

数据加载

对于 7.0 版及更早版本的 MAT 文件,From File 模块在仿真开始时将完整的未压缩数据从文件加载到内存中。对于 7.3 版 MAT 文件,From File 模块在仿真期间从文件中以增量方式加载数据。

对于 MAT 文件不包含匹配时间戳的每个仿真时间点,Simulink® 使用内插或外插来获取所需的数据。您指定内值和外插方法。

在仿真期间,From File 模块不能从 To File 模块向其导出数据的 MAT 文件加载数据。

采样时间

From File 模块的 Sample time 参数指定从 MAT 文件加载数据的采样时间。文件中的时间戳必须单调非递减。有关详细信息,请参阅 From File 模块文档。

没有对应时间数据的仿真时间点

如果仿真时间点没有对应的 MAT 文件时间戳,则 From File 模块输出取决于:

  • 仿真时间点出现在第一个时间戳之前、时间戳范围内还是最后一个时间戳之后

  • 您选择的内插或外插方法

  • MAT 文件数据的数据类型

有关内插和外插选项的详细信息,请参阅下列 From File 模块参数的文档:

  • Data extrapolation before first data point

  • Data interpolation within time range

  • Data extrapolation after last data point

重复时间戳

有时,MAT 文件包含重复的时间戳(两个或更多数据值具有相同的时间戳)。在这种情况下,From File 模块的操作取决于仿真时间点的出现时间(相对于 MAT 文件中的重复时间戳)。

假设 MAT 文件包含以下数据,其中三个数据值的时间戳值为 2

time stamps:    0 1 2 2 2 3 4
data values:    2 3 6 4 9 1 5

下表说明 From File 模块输出。

仿真时间(相对于 MAT 文件中的重复时间戳值)From File 模块操作
在重复时间戳之前

将第一个重复的时间戳值用作插值的基值。(在此示例中,该时间戳值为 6。)

在重复时间戳处或之后

将最后一个重复的时间戳值用作插值的基值。(在此示例中,该时间戳值为 9。)

检测过零点

过零检测可在不使用特别小的时间步的情况下找到时间戳中的不连续点。默认情况下,From File 模块未启用过零检测。

对于 From File 模块,过零检测仅在文件中的时间戳所标记的时间点发生。Simulink 仅检查时间戳,而不检查数据值。

对于总线信号,Simulink 将跨所有叶节点总线元素进行过零检测。

有关详细信息,请参阅 Enable zero-crossing detection 参数的 From File 模块文档。

为 From File 模块创建数据

不支持 NaN 值

不要在加载到 From File 模块的 MAT 文件中包含 NaN 值。

由 To File 模块保存的数据

From File 模块加载由 To File 模块写入的数据,无需对数据进行任何修改,也没有任何其他特殊配置。

支持的 MAT 文件版本

支持的 MAT 文件版本有:

  • 7.0 或更早版本

  • 版本 7.3

对于 7.0 及更早版本的 MAT 文件,From File 模块在仿真开始时将完整的未压缩数据从文件加载到内存中。对于 7.3 版 MAT 文件,From File 模块在仿真期间从文件中以增量方式加载数据。

有关 MAT 文件的详细信息,请参阅 MAT 文件版本

转换 7.0 和更早版本的 MAT 文件.  如果要将 7.0 或更早版本的 MAT 文件用于 From File 模块,请考虑将该文件转换为 7.3 版本。如果希望 From File 模块在仿真期间以增量方式加载数据,或者要使用 MATLAB® timeseries 数据,请使用 7.3 版本的 MAT 文件。例如,要转换包含变量 var 的名为 my_data_file.mat 的 7.0 版本文件,请在 MATLAB 命令提示符下输入:

load('my_data_file.mat')
save('my_data_file.mat', 'var', '-v7.3')

存储格式

From File 模块从 MAT 文件加载数据时,该数据必须以数组格式存储或作为 MATLAB timeseries 对象存储。

数组数据.  数组格式仅可用于向量、双精度、非复信号数据。

对于 7.0 版本的 MAT 文件,From File 模块加载数组数据,但不加载 MATLAB timeseries 数据。

存储数据的数组格式是包含两行或更多行的矩阵。MAT 文件中的矩阵必须具有以下形式:

[t1t2tfinalu11u12u1finalun1un2unfinal]

每列的第一个元素包含时间戳。每列的其余部分包含对应输出值的数据。每个元素必须是一个双精度值。元素不能包含 NaNInf-Inf

对于使用数组格式存储的数据,From File 输出的宽度取决于矩阵中的行数。对于包含 m 行的矩阵,模块输出长度为 m -1 的向量。

MATLAB 时序数据.  要对 From File 模块使用总线数据,请使用 MATLAB timeseries 格式。

MATLAB timeseries 格式数据可以具有:

  • 任何维度和复/实性

  • 任何内置数据类型,包括 Boolean

  • 定点数据类型,字长最多为 32 位

  • 枚举数据类型

当您使用 From File 模块加载 timeseries 数据时,时间数据的数据类型必须为 double

MATLAB timeseries 格式支持以下仿真和代码生成模式:

  • Normal

  • Accelerator

  • Rapid Accelerator

  • Model Reference Accelerator

有关使用 MATLAB timeseries 数据创建 MAT 文件的示例,请参阅 From File 模块文档。

时间戳

文件中的时间戳必须单调非递减。

总线数据

From File 模块支持加载非虚拟总线信号。

数据必须位于与总线层次结构匹配的 MATLAB 结构体中。结构体的每个叶必须是 MATLAB timeseries 对象。

该结构体可以欠定总线信号,但不能过定总线信号。该结构体不能具有在总线中没有对应信号的任何元素。

该结构体不要求具有与总线层次结构中的每个元素对应的 timeseries 对象。但是,该结构体必须具有一个 timeseries 对象对应于总线中的至少一个信号。对于未指定数据的信号,From File 模块输出接地值。

MAT 文件变量

如果一个 MAT 文件只包含一个变量,则 From File 模块将使用该变量。如果该 MAT 文件包含多个变量,则:

  • 对于 7.3 版本的 MAT 文件,From File 模块使用按字母顺序排列的第一个变量。

  • 对于 7.0 或更早版本的 MAT 文件,From File 模块使用第一个变量。但是,对于这些版本,变量的排序算法相当复杂。将仅包含该变量的 MAT 文件与希望 From File 模块加载的数据结合使用。

另请参阅

模块

相关主题