Main Content

From Workspace

将信号数据从工作区加载到 Simulink 模型中

  • From Workspace block

库:
Simulink / Sources

描述

From Workspace 模块将数据从工作区读入 Simulink® 模型,并在模块的输出端以信号或非虚拟总线形式提供数据。您可以从基础工作区、模型工作区或封装工作区加载数据。您可以使用 From Workspace 模块将信号数据从引用模型或子系统可访问的工作区加载到模型层次结构中的任何模型或子系统中。

您可以指定模块如何从工作区数据构造输出,包括输出采样周期、内插和外插行为,以及是否使用过零检测。

From Workspace 模块图标显示数据参数的值。例如,如果您使用 From Workspace 模块加载变量 x 中的数据,并且指定 x 作为数据参数的值,则该模块将显示 x

指定要加载的数据

使用数据参数指定要加载的 From Workspace 模块的数据。您可以将数据参数的值指定为 MATLAB® 表达式,例如变量名称。数据参数中的表达式的计算结果必须为 From Workspace 模块支持的格式的数据。有关如何计算表达式的详细信息,请参阅符号解析

From Workspace 模块不从数据字典加载数据。使用数据字典仅存储模型的设计数据,不存储仿真输入数据。您可以在数据字典中存储与 From Workspace 模块相关的设计数据,例如采样时间参数的值。

示例

全部展开

此示例说明如何从 MATLAB 工作区读取二维结构体。当您打开模型时,PreLoadFcn 回调执行以下代码:

t1 = 0.2 * [0:49]';
m = magic(10);
M = repmat(m,[1 1 length(t1)]);
data.time=t1;
data.signals.values = M;
data.signals.dimensions=[10 10];

以下代码通过使用 magic 函数创建一个 10×10 矩阵(二维信号),然后通过添加时间向量创建一个三维矩阵。时间向量必须为列向量。signals.values 字段是三维矩阵,其中第三个维度对应于时间。signals.dimensions 字段是一个二元素向量。第一个元素是 signals.values 字段中的行数,第二个元素是列数。

在运行模型时,From Workspace 模块从工作区读取结构体 data

端口

输出

全部展开

从工作区加载的数据,在模块输出端作为信号或非虚拟总线提供。根据您加载的数据,输出信号可能是标量、向量、多维或可变大小信号、总线或总线数组 (自 R2021a 起)From Workspace 模块支持加载除 int64uint64 之外的所有内置数据类型的实数和复数数据。

数据类型: single | double | half | int8 | int16 | int32 | uint8 | uint16 | uint32 | Boolean | fixed point | enumerated | bus
复数支持:

参数

全部展开

要从工作区加载的数据,指定为 MATLAB 变量或 MATLAB 表达式,该表达式的计算结果为 From Workspace 模块支持的格式的数据。该表达式可以创建 From Workspace 模块在其输出端提供的数据,也可以引用包含要加载的数据的工作区变量。有关如何计算表达式的详细信息,请参阅符号解析

From Workspace 模块可以加载标量的实数或复数数据、多维和可变大小信号的数据以及总线或总线数组的数据。

From Workspace 模块支持不同输入数据格式,具体取决于您要该模块在模型中生成的输出的类型。对于所有类型的输出和数据格式:

  • 输入数据中的时间值必须具有 double 数据类型并且单调递增。

  • 时间和数据值不能包含 InfNaN 值。

输出的类型数据格式提示

标量或向量信号

  • 只包含单一列的 timetable (自 R2020a 起)

  • timeseries 对象

  • Simulink.SimulationData.Signal 对象

  • 具有与结构体带时间的结构体记录格式匹配的字段和层次结构的结构体。

  • 二维数组,其中第一列是时间,一个或多个其他列包含每个时间戳对应的信号值

  • 对于标量和向量信号,信号数据中的行数必须与时间向量中的行数匹配。

  • 要创建一个 timetable 对象,时间值必须为 duration 向量。

    仿真时间始终使用秒为单位。当创建使用秒以外的单位的持续时间向量时,软件会将值转换为秒以便在仿真中使用。

  • 数组格式不支持复信号值或数据类型不是 double 的信号值。

多维信号

  • timeseries 对象

  • 只包含单一列的 timetable (自 R2020a 起)

  • Simulink.SimulationData.Signal 对象

  • 具有与结构体带时间的结构体记录格式匹配的字段和层次结构的结构体

  • 对于具有二维或更多维的值的多维信号,最后一个维度的长度必须与时间向量的长度匹配。

    例如,2×2 矩阵信号的 10 个采样的输入数据具有一个包含 10 行的时间向量和一个由维度为 2×2×10 的信号值组成的数组。

  • 要创建一个 timetable 对象,时间值必须为 duration 向量。

    仿真时间始终使用秒为单位。当创建使用秒以外的单位的持续时间向量时,软件会将值转换为秒以便在仿真中使用。

可变大小信号

具有与结构体带时间的结构体记录格式匹配的字段和层次结构的结构体

要以可使用 From Workspace 模块加载的格式记录可变大小信号,请将该信号连接到一个顶层 Outport 模块,并将模型的格式配置参数设置为结构体带时间的结构体

总线

timetable (自 R2020a 起)timeseries 对象的结构体:

  • 输出数据类型参数指定为定义总线的 Simulink.Bus 对象。

  • 结构体的层次结构和字段名称必须与总线的层次结构和元素名称匹配。

  • 每个 timetabletimeseries 对象包含总线中一个叶信号的数据。

  • 每个 timetable 只能包含一列。

要部分指定总线的输入数据,请在输入数据结构体中将不需要加载数据的总线元素设置为 []

总线数组 (自 R2021a 起)

结构体数组,其中每个结构体表示总线数组内的一个总线的数据
  • 快速加速仿真不支持加载总线数组的数据。

  • From Workspace 顶层模型中的模块支持在普通和加速模式仿真中加载总线数组的数据。

  • 仅当引用模型在普通模式下执行时,引用模型中的 From Workspace 模块才支持加载总线数组的数据。

  • 要部分指定总线数组的输入数据,请在表示该总线的数据的结构体中将不需要加载数据的总线元素设置为 []

有关详细信息,请参阅使用 From Workspace 模块加载数据

提示

  • 要加载使用 To File 模块以数组格式记录的数据,请转置数组以使时间值位于单列而不是单行中。您可以使用 transpose 函数,并将转置后的数据保存到一个新文件中。

  • 对于使用 simparsimbatchsim 函数运行的编程仿真,您可以使用 Simulink.SimulationInput 对象来指定 From Workspace 模块要加载的数据。

    • 使用 setBlockParameter 函数设置 VariableName 参数的值以用于模块上的仿真。

    • 使用 setVariable 函数将包含输入数据的变量添加到 SimulationInput 对象中。

编程用法

要以编程方式设置模块参数值,请使用 set_param 函数。

要以编程方式获取模块参数值,请使用 get_param 函数。

参数: VariableName
值: 'simin' (默认) | MATLAB expression | timeseries object | timetable | structure | 2-D array
数据类型: char | string

示例: set_param("myModel/From Workspace","VariableName","inData") configures the From Workspace block named From Workspace in the model myModel to load data stored in the MATLAB variable named inData.

From Workspace 模块加载的工作区数据的数据类型。默认情况下,From Workspace 模块从工作区数据或定义信号数据类型的下游模块继承输出信号数据类型。

提示

  • 加载标量、向量或多维信号数据时,可以选择继承输出数据类型,也可以指定输出数据类型以匹配工作区数据的数据类型。

  • 要加载总线或总线数组数据,请将输出数据类型设置为 Bus: <bus_object>,并指定定义输出总线的 Simulink.Bus 对象的名称。

    加载枚举数据时,请将输出数据类型设置为 Enum: <class_name>,并指定定义枚举数据值的枚举类的名称。

  • 数据类型助手可帮助您设置数据属性。要使用数据类型助手,请点击 the Show data type assistant button。有关详细信息,请参阅使用数据类型助手指定数据类型

编程用法

要以编程方式设置模块参数值,请使用 set_param 函数。

要以编程方式获取模块参数值,请使用 get_param 函数。

参数: OutDataTypeStr
值: 'Inherit: auto' (默认) | 'double' | 'single' | 'half' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'boolean' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)' | 'Enum: <class name>' | 'Bus: <object name>' | data type expression
数据类型: char | string

示例: set_param("myModel/From Workspace","OutDataTypeStr","int32") specifies that data type must be int32 for the data the From Workspace block named From Workspace loads into the model myModel.

采样时间参数指定模块在仿真期间计算新输出值的时间。有关详细信息,请参阅指定采样时间

当您不希望输出具有时间偏移量时,请将采样时间参数指定为标量。要向输出添加时间偏移量,请将采样时间参数指定为 1×2 向量,其中第一个元素是采样周期,第二个元素是偏移量。

默认情况下,采样时间参数值为 0,表示没有时间偏移量的连续采样时间。对于离散信号,请将采样时间指定为离散采样间隔。例如,将采样时间指定为 0.1 以对每 100 毫秒采样一次的离散信号建模。将采样时间指定为 -1 以继承该值。

编程用法

要以编程方式设置模块参数值,请使用 set_param 函数。

要以编程方式获取模块参数值,请使用 get_param 函数。

参数: SampleTime
值: '0' (默认) | scalar | vector
数据类型: char | string

示例: set_param("myModel/From Workspace","SampleTime","0.1") configures the From Workspace block named From Workspace in the model myModel to execute with a sample time of 0.1 seconds.

用于为加载的工作区数据中的时间值之间的仿真时间提供输出值的插值方法。当您选择数据插值时,From Workspace 模块使用加载的工作区数据中的相邻值对输出值进行线性插值。当未选择数据插值时,From Workspace 模块提供加载的工作区数据中前一个数据点的值。有关插值算法的详细信息,请参阅插值

加载枚举、定点或可变大小信号数据时,请清除数据插值参数。

为了在加载的工作区数据的最后一个值后提供输出值,From Workspace 模块会组合使用数据插值参数和最终数据值之后的输出参数。

数据插值参数值还会影响 From Workspace 模块在加载的工作区数据的第一个数据点之前对仿真时间的输出值进行外插的方式。当选择数据插值时,From Workspace 模块使用工作区数据中的前两个数据点对第一个数据点之前的仿真时间的输出值进行线性外插。当未选择数据插值时,该模块提供接地值作为第一个工作区数据点之前的仿真时间的输出值。有关 From Workspace 模块外插行为的完整信息,请参阅外插

编程用法

要以编程方式设置模块参数值,请使用 set_param 函数。

要以编程方式获取模块参数值,请使用 get_param 函数。

参数: Interpolate
值: 'on' (默认) | 'off'
数据类型: char | string

示例: set_param("myModel/From Workspace","Interpolate","off") configures the From Workspace block named From Workspace to use zero-order hold interpolation for loading data into the model myModel.

过零检测是一种用于定位模块输出中的不连续点并避免在不连续点附近使用过小的时间步的方法,它可能会减慢仿真速度。过零指数据中的不连续点。当采样时间连续时 (0),From Workspace 模块可以检测过零点。

当数据包含时间相同的多个采样时,加载的工作区数据会在模块输出中产生不连续点。例如,对于此输入数据,在时间 2 处出现不连续点。

time:     0 1 2 2 3
signal:   2 3 4 5 6

仅在您选择插值参数时,From Workspace 模块才检测由输入数据中的重复时间值引起的过零。

当您将最终数据值之后的输出设置为设置为零时,From Workspace 模块还会在工作区数据中的最后一个采样的输出中产生不连续点。

加载总线的输入数据时,From Workspace 模块会检测所有总线元素的过零点。

此模块仅在使用变步长求解器的仿真中支持过零检测。当使用定步长求解器进行仿真时,软件不会检测或定位此模块的过零点。

有关详细信息,请参阅过零检测

编程用法

要以编程方式设置模块参数值,请使用 set_param 函数。

要以编程方式获取模块参数值,请使用 get_param 函数。

参数: ZeroCross
值: 'on' (默认) | 'off'
数据类型: char | string

示例: set_param("myModel/From Workspace","ZeroCross","off") disables the Enable zero-crossing detection parameter for the From Workspace block named From Workspace in the model myModel.

From Workspace 模块使用数据插值最终数据值之后的输出设置来确定工作区数据中最后一个可用样本后的仿真时间的模块输出。

最终数据值之后的输出的设置数据插值的设置最终数据之后的模块输出

外插

On

根据最终数据值外插

关闭

错误

设置为零

On

Off

保持最终值

On

工作区中的最终值

Off

循环重复

On

错误

Off

当加载的工作区数据使用不带时间格式的结构体时,从工作区数据的第一个值开始重复。

如果工作区数据格式不是带时间的结构体格式,则会出错。

有关 From Workspace 模块外插行为的完整信息,请参阅外插

编程用法

要以编程方式设置模块参数值,请使用 set_param 函数。

要以编程方式获取模块参数值,请使用 get_param 函数。

参数: OutputAfterFinalValue
值: 'Extrapolation' (默认) | 'Setting to zero' | 'Holding final value' | 'Cyclic repetition'
数据类型: char | string

示例: set_param("myModel/From Workspace","OutputAfterFinalValue","Holding final value") configures the From Workspace block named From Workspace in the model myModel to use the final input data value as the output value for time steps that occur after the last time value in the input data.

模块特性

数据类型

Boolean | bus | double | enumerated | fixed pointa | half | integer | single | string

直接馈通

多维信号

可变大小信号

过零检测

a 支持通过由 Fixed-Point Designer 创建的 fi 对象实现输入。

算法

全部展开

扩展功能

版本历史记录

在 R2006a 之前推出

全部展开