Main Content

本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

使用 From Workspace 模块加载数据

要使用 From Workspace 模块加载信号数据,请执行下列操作:

  1. 使用要加载的信号数据创建一个工作区变量。

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

  3. 双击 From Workspace 模块并配置:

    • 要加载的工作区数据

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

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

    假设工作区包含名为 T 的时间列向量以及名为 U 的对应信号值列向量。为 Data 参数输入表达式 [T U] 将生成所需的输入数组。如果所需的数组或结构体已存在于工作区中,请在 Data 参数中输入该结构体或矩阵的名称。

除了使用 From Workspace 模块加载工作区数据外,还有一种替代方法,即将数据加载到根级输入端口。有关详细信息,请参阅根级输入端口

指定工作区数据

双击 From Workspace 模块,在 Data 参数中,指定要加载的工作区数据。指定 MATLAB® 表达式(例如 MATLAB 工作区中的变量名称),其计算结果为以下项之一:

  • timeseriestimetable 对象

    double 类型的实信号可以采用 From Workspace 模块支持的任何格式。对于除 double 以外的数据类型的复信号和实信号,请使用除 Array 以外的任意格式。

  • timeseriestimetable 对象的结构体

    对于总线数据,使用由 timeseriestimetable 对象组成的结构体。匹配总线层次结构,并为总线中的每个叶信号指定一个 timeseriestimetable 对象。按照向根级 Inport 模块中加载总线信号的相同方式设置数据。有关详细信息,请参阅Load Bus Data to Root-Level Input Ports

  • 带或不带时间的结构体

    有关详细信息,请参阅指定 From Workspace 模块的结构体数据

  • 二维矩阵

    使用矩阵只能指定一维信号。每个矩阵行的第一个元素是时间戳。每行的其余部分是信号值标量或向量。

注意

当您指定要加载的 timetable 数据时,每个 timetable 对象只能包含一个信号的数据。

指定 From Workspace 模块的结构体数据

可将结构体用于带或不带时间值的一维或多维信号。对于结构体,请使用以下格式:

  • signals.values 字段,包含信号值的列向量。

  • 可选的 signals.dimensions 数组,包含信号的维度。

  • 可选的 time 双精度向量,它是时间戳的列向量。

    ntime 元素是第 nsignals.values 元素的时间戳。

您使用的结构体的形式取决于是否要为以下信号导入数据:

  • 离散信号(按均匀间隔的时间值定义的信号)- 使用具有空时间向量的结构体。

  • 连续信号(定义了所有时间值的信号)- 使用的方法取决于数据是表示平滑曲线还是在其范围内具有不连续点(跳跃)的曲线。

有关示例,请参阅:

离散信号和连续信号都需要指定 signals 字段,此字段包含一个子结构体数组,其中的每个子结构体对应一个模型输入端口。

每个 signals 子结构体必须包含两个字段:valuesdimensions

  • values 字段必须包含与输入端口对应的输入值数组。如果您指定时间向量,则每个输入值必须对应 time 字段中指定的一个时间值。

    如果端口的输入值是标量或向量,则 values 字段必须是一个 M-by-N 数组。如果您指定时间向量,则 M 必须是 time 字段指定的时间点数,N 必须是每个向量值的长度。

    如果端口的输入值是矩阵(二维数组),则 values 字段必须是一个 M-by-N-by-T 数组。MN 是每个矩阵输入值的维度,T 是时间点数。假设您要将 4×5 矩阵信号的 51 个时间样本输入到模型上的一个输入端口。那么,工作区结构体的对应 dimensions 字段必须等于 [4 5]values 数组的维度必须为 4-by-5-by-51

  • dimensions 字段指定输入的维度。如果每个输入值都是标量或向量(一维数组),则 dimensions 字段必须是指定向量长度的标量值(1 表示标量)。如果每个输入值都是矩阵(二维数组),则 dimensions 字段必须是二元素向量,第一个元素指定矩阵的行数,第二个元素指定列数。

对于连续信号,您可以指定包含时间向量的 time 字段。如何指定时间值取决于您需要的信号数据的类型。

有关定义 MATLAB 结构体的信息,请参阅创建结构体数组

信号数据时间数据建议

均匀间隔的离散信号

使用以下形式的表达式:

timeVector = timeStep * [startTime:numSteps-1]' 

向量将被转置。此外,因为开始时间是一个时间步,所以您指定的步数应比需要的步数少 1。例如,要以 0.2 为时间步指定 50 个时间值,请输入:

T1 = 0.2 * [0:49]' 

注意

不要使用以下形式的表达式:

timeVector = [startTime:timeStep:endTime]' 

例如,不要使用:

T2 = [0:0.2:10]' 

此时间向量形式不等于乘以时间步的形式 (T1),因为计算机使用的是双精度舍入。Simulink® 需要的是精确值,不进行双精度舍入。使用 T2 形式可能会导致意想不到的仿真结果。

非等间距值

使用任何有效的 MATLAB 数组表达式;例如 [1:5 5:10](1 6 10 15)

From WorkspaceFrom FileSignal Editor 模块支持过零检测。如果根级输入端口连接到这些模块之一,则您可以使用重复的时间条目指定过零时间点。

如果您加载未指定时间向量的结构体:

  1. Sample time (-1 for inherited) 设置为除 0(连续)以外的值。

  2. 清除 Interpolate data

  3. Form output after final data value by 设置为 “Extrapolation” 之外的值。

使用来自 To File 模块的数据

您可以使用 From Workspace 模块加载在以前的仿真中由 To Workspace 模块导出、供将来仿真使用的数据。将 To Workspace 模块数据保存为 “Timeseries” 或 “Structure with Time” 格式。加载由 To File 模块使用 MATLAB timeseries 导出到文件中的数据不需要您更改数据。

如果您将 To File 模块的 Save format 参数设置为 “Array”,将转置导出的数组数据。To File 模块保存的数据包含连续时间戳列,后跟对应的数据。转置的数据包含连续时间戳行,后跟对应的数据。要提供所需的格式,请对 MAT 文件使用 MATLAB loadtranspose 命令。为避免再次转置数据,请重新保存已转置的数据。

加载数据集数据

要使用 Simulink.SimulationData.Dataset 格式的工作区数据,请从 Dataset 提取 timeseriestimetable 对象。例如,如果您使用 Dataset 格式的信号记录并使用默认输出变量 logsout,请为每个记录的信号输入:

logsout.get(1).values

指定可变大小信号

您可以使用 To Workspace 模块(“Structure” 或 “Structure With Time” 格式)或根 Outport 模块来记录可变大小信号。然后将 To Workspace 变量与 From Workspace 模块配合使用。

也可以创建一个包含可变大小信号数据的 MATLAB 结构体。对于此结构体中的每个 values 字段,可以包括一个 valueDimensions 字段,用于指定信号的运行时维度。有关详细信息,请参阅使用可变大小信号的 Simulink 模型

为链接数据字典的模型存储数据

在链接数据字典的模型中使用 From Workspace 模块时,必须为该模块引用的数据选择存储位置。根据包含要加载的目标数据的工作区或字典,设置 Data 参数的值。有关详细信息,请参阅使用 From Workspace 模块加载数据

采样时间

From Workspace 模块的 Sample time 参数指定要从工作区加载数据的采样时间。工作区数据中的时间戳必须单调非递减。有关详细信息,请参阅指定采样时间

插入缺少的数据值

要使用线性拉格朗日插值法计算在由工作区提供数据的时间点之间发生的时间点的数据值,请选择 Interpolate data

对于可变大小信号,则清除 Interpolate data

指定最终数据之后的输出

要确定有可用工作区数据的最后一个时间点之后的模块输出,请结合使用以下参数设置:

  • Interpolate data

  • Form output after final data value by

From Workspace 模块文档中,请参阅 Form output after final data value by 参数。

检测过零点

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

仅当采样时间连续 (0) 时,Enable zero-crossing detection 参数才适用。

如果选择 Enable zero-crossing detection 参数,且输入数组包含同一时间点的多个条目,则 Simulink 将在该时间点进行过零检测。

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

另请参阅

模块

相关主题