将 CSV 文件中的数据导入仿真数据检查器
要将数据从 CSV 文件导入仿真数据检查器,请格式化该 CSV 文件中的数据。然后,您可以使用仿真数据检查器 UI 或 Simulink.sdi.createRun
函数导入数据。
提示
当您要从 CSV 文件导入数据时,如果其中的数据格式与本主题中的设定不同,您可以使用 io.reader
类为仿真数据检查器编写您自己的文件读取器。
基本文件格式
在最简单的格式中,CSV 文件的第一行是标题,列出文件中信号的名称。第一列是时间。时间列的名称必须为 time
,并且时间值必须单调递增。信号名称以下的各行列出对应于每个时间步的信号值。
导入操作不支持包含 Inf
或 NaN
值的时间数据或包含 Inf
值的信号数据。空值或 NaN
信号值呈现为缺失数据。支持所有内置数据类型。
多个时间向量
当数据包含具有不同时间向量的信号时,文件可以包含多个时间向量。每个时间列必须命名为 time
。时间列指定其右边各信号列的采样时间,直到下一个时间向量列为止。例如,第一个时间列定义 signal1
和 signal2
的时间,第二个时间列定义 signal3
的时间步。
信号列必须具有与相关联的时间向量相同的数据点数。
信号元数据
您可以在 CSV 文件中指定信号元数据,以指示信号数据类型、单位、插值方法、模块路径和端口索引。在信号名称和信号数据之间的行中列出每个信号的元数据。根据下表对元数据进行标记。
信号属性 | 标签 | 值 |
---|---|---|
数据类型 | Type: | 内置数据类型。 |
单位 | Unit: | 支持的单位。例如, 有关支持的设备列表,请在 MATLAB® 命令行窗口中输入 |
插值方法 | Interp: | linear 、zoh (零阶保持)或 none 。 |
模块路径 | BlockPath: | 生成信号的模块的路径。 |
端口索引 | PortIndex: | 整数。 |
您也可以导入数据类型由枚举类定义的信号。请使用 Enum:
标签并将值指定为枚举类的名称,而不是使用 Type:
标签。枚举类的定义必须保存在 MATLAB 路径中。
当导入的文件未指定信号元数据时,仿真数据检查器会采用双精度数据类型和线性插值。您可以将插值方法指定为 linear、zoh(零阶保持)或 none。如果未在文件中指定信号的单位,则可以在导入文件后,在仿真数据检查器中为信号指定单位。
您可以为每个信号指定任意元数据组合。对元数据指定不足的信号,在相应位置保留一个空元胞即可。
从 CSV 文件导入数据
您可以使用仿真数据检查器 UI 或使用 Simulink.sdi.createRun
函数从 CSV 文件导入数据。
要使用 UI 导入数据,请使用 Simulink.sdi.view
函数或 Simulink™ 工具条中的数据检查器按钮打开仿真数据检查器。然后,点击导入按钮。
在“导入”对话框中,选择从文件导入数据的选项,并在文件系统中导航以选择文件。选择文件后,可用于导入的数据会显示在表中。您可以选择导入哪些信号,以及是将它们导入新运行还是现有运行中。此示例将所有可用信号导入新运行中。选择选项后,点击导入按钮。
当您使用 UI 将数据导入新运行时,新运行名称在运行编号后会跟有 Imported_Data
。
以编程方式导入数据时,您可以指定导入的运行的名称。
csvRunID = Simulink.sdi.createRun('CSV File Run','file','csvExampleData.csv');