Main Content

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

To Workspace

将数据写入工作区

  • 库:
  • Simulink / Sinks

    HDL Coder / Sinks

说明

To Workspace 模块将输入信号数据写入到工作区。在仿真期间,模块将数据写入到内部缓冲区。暂停仿真或仿真完成后,该数据将写入到工作区。在仿真暂停或停止之前,数据不可用。

To Workspace 模块通常将数据写入 MATLAB® 基础工作区。对于 MATLAB 函数中的 sim 命令,To Workspace 模块将数据发送到调用函数的工作区,而不是 MATLAB 基础工作区。要将记录的数据发送给基础工作区,请在函数中使用 assignin 命令。

function myfunc
    a = sim('mTest','SimulationMode','normal');
    b = a.get('simout')
    assignin('base','b',b);
end

To Workspace 模块图标会显示写入数据的变量的名称。

控制保存的数据量

如果通过 Configuration Parameters > Data Import/Export > Logging intervals 参数指定了数据记录时间间隔,To Workspace 模块将不会记录该时间间隔之外的数据。例如,如果时间间隔为空 ([]),模块则不会记录任何数据。模块将记录的数据存储在您为 Single simulation output 参数指定的变量中。

对于可变步长求解器,要控制 To Workspace 模块可用的数据量,请使用 Configuration Parameters > Data Import/Export > Additional parameters > Output options 参数。例如,要在多次仿真的相同时间点写入数据,请选择 Produce specified output only 选项。

模块参数还控制保存的数据量。请参阅 Limit data points to last, Limit data points to lastLimit data points to lastLimit data points to lastDecimation, DecimationDecimationDecimationSample time, Sample timeSample timeSample time

记录到 MAT 文件

Configuration Parameters 中启用 MAT-file logging 参数后,To Workspace 模块会将其数据记录到 MAT 文件中。有关此参数的信息,请参阅 MAT 文件日志记录 (Simulink Coder)

端口

输入

全部展开

从输入信号创建的工作区数据。To Workspace 模块可以保存 Simulink® 支持的任何数据类型的实数或复数输入,包括定点和枚举数据类型以及总线对象。

默认情况下,To Workspace 模块将输入信号视为基于采样。要使 To Workspace 模块将输入信号视为基于帧,请执行以下操作:

  1. Save format 设置为 “Array” 或 “Structure

  2. Save 2-D signals as 设置为 “2-D array (concatenate along first dimension)

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus

参数

全部展开

指定用于保存数据的变量的名称。

编程用法

模块参数:VariableName
类型:字符向量
值:字符向量
默认值:'simout'

指定要保存的输入采样的最大数量。如果仿真生成的数据点大于指定的最大值,仿真将只保存最近生成的采样。默认值使模块写入所有数据。

编程用法

模块参数MaxDataPoints
类型:字符向量
值:标量 | 向量
默认值: 'inf'

指定抽取因子 n,它在模块每执行 n 次时写入数据。默认值使模块在每个时间步写入数据。

编程用法

模块参数:Decimation
类型:字符向量
值:标量 | 向量
默认值:'1'

指定将仿真输出保存到工作区所用的格式。

默认的 “Timeseries” 格式将非总线信号另存为 MATLAB timeseries 对象,将总线信号另存为 MATLAB timeseries 对象的结构体。

Array” 格式将输入另存为 N 维数组,其中 N 比输入信号的维数多一维。例如,如果输入信号是向量,则生成的工作区数组为二维。如果输入信号是矩阵,则数组为三维。Simulink 在数组中存储采样的方式取决于输入信号是标量、向量还是矩阵。

  • 如果输入信号为标量或向量,则每个输入采样输出为数组的一行。假设输出数组的名称为 simout。那么,simout(1,:) 对应于第一个采样,simout(2,:) 对应于第二个采样,依此类推。

  • 如果输入信号是矩阵,则时间对应于第三个维度。再次假设生成的工作区数组的名称为 simout。那么,simout(:,:,1) 是在第一个采样点的输入信号值;simout(:,:,2) 是在第二个采样点的输入信号值,依此类推。

Structure” 格式包含的结构体有三个字段:

  • time - 对于此格式,该字段为空。

  • signals - 包含下列三个字段的结构体:valuesdimensionslabelvalues 字段包含信号值数组。dimensions 字段指定对应信号的维度。label 字段包含输入行的标签。

  • blockName - To Workspace 模块的名称。

Structure With Time” 格式与 “Structure” 的格式相同,不同之处在于 time 字段包含仿真时间点向量。

如果选择 “Array” 或 “Structure”,将显示 Save 2-D signals as 参数。

要使用 From Workspace 模块直接读取 To Workspace 模块输出,请使用 “Timeseries” 或 “Structure with Time” 格式。From Workspace 模块可以从先前仿真中保存的 To Workspace 模块中读取基于采样的数据。有关详细信息,请参阅Comparison of Signal Loading Techniques

下表显示了不同 Save format 值对仿真模式的支持情况。

仿真模式TimeseriesArray”、“Structure” 或 “Structure With Time
Normal支持支持
Accelerator支持仅在顶层模型中支持,在引用模型中不支持。
Rapid Accelerator不支持仅在顶层模型中支持,在引用模型中不支持。
软件在环 (SIL) 不支持如果启用了 MAT 文件日志记录,则仅在顶层模型中支持,在引用模型中不支持。
处理器在环 (PIL)不支持如果 MAT 文件日志记录可用并已启用,则仅在顶层模型中支持,在引用模型中不支持。
外部不支持仅在顶层模型中支持,在引用模型中不支持。
Simulink Coder™ 目标不支持如果启用了 MAT 文件日志记录,则仅在顶层模型中支持,在引用模型中不支持。

编程用法

模块参数SaveFormat
类型:字符向量
'Timeseries' | 'Structure with Time' | 'Structure' | 'Array'
默认值:'Timeseries'

指定将二维信号保存到工作区中时使用的格式,包括:

  • 3-D array (concatenate along third dimension)”(默认值)

    此设置非常适合基于采样的信号。数据沿第三个维度串联。例如,将 10 个采样的 2×4 矩阵输入存储为 2×4×10 数组。

  • 2-D array (concatenate along first dimension)

    此设置非常适合基于帧的信号。数据沿第一个维度串联。例如,将 10 个采样的 2×4 矩阵输入存储为 20×4 数组。

Save format 设置为 “Array” 或 “Structure” 时,输出的维度取决于输入的维度和 Save 2-D signals as 参数的设置。下表总结了各种情况下的输出维度。在该表中,K 代表 Limit data points to last 参数值。

输入信号维度Save 2-D Signals As ...To Workspace 输出信号维度

M×N 矩阵

2-D array (concatenate along first dimension)

K×N 矩阵。

如果将 Limit data points to last 参数设置为 inf,则 K 表示仿真结束时每一列中获取的采样总数。此设置等于输入帧大小 (M) 乘以模块获取的 M×N 输入的总个数。

M×N 矩阵

3-D array (concatenate along third dimension)

M×N×K 数组。

如果将 Limit data points to last 参数设置为 inf,则 K 表示仿真结束时获取的 M×N 输入的总数。

长度为 N 的无向向量

任何设置

K×N 矩阵

N 维数组,其中 N > 2

任何设置

N + 1 维数组,最后一个维度的大小等于 K。如果将 Limit data points to last 参数设置为 inf,则 K 表示仿真结束时获取的 M×N 输入的总数。

Dependencies

要启用 Save 2-D signals as 参数,请将 Save format 设置为 “Array” 或 “Structure”。

编程用法

模块参数Save2DSignal
类型:字符向量
'2-D array (concatenate along first dimension)' | '3-D array (concatenate along third dimension)'
默认值:'3-D array (concatenate along third dimension)'

默认情况下,To Workspace 模块将定点数据作为 Fixed-Point Designer™ 的 fi 对象记录到 MATLAB 工作区中。如果清除此参数,Simulink 软件会将定点数据作为 double 记录到工作区。

编程用法

模块参数FixptAsFi
类型:字符向量
值:'off' | 'on'
默认值:'off'

指定采集数据点的采样期间和偏移量。使用时间步间隔不是常量的可变步长求解器时,此参数很有用。默认值使此模块继承驱动模块的采样时间。请参阅 指定采样时间

编程用法

模块参数:SampleTime
类型:字符向量
值:标量 | 向量
默认值:'-1'

模块特性

数据类型

Boolean | bus | double | enumerated | fixed point | integer | single

直接馈通

多维信号

可变大小信号

过零检测

提示

为了使后处理更容易,您可以将此模块保存的数据转换为 “Dataset” 格式。当您通过可使用 “Dataset” 格式的其他记录的数据(例如,记录的状态)后处理此数据时,此转换非常有用。请参阅Convert Logged Data to Dataset Format。也可以使用信号日志记录,但可变大小信号情况除外。

扩展功能

PLC 代码生成
使用 Simulink® PLC Coder™ 生成结构化文本代码。

定点转换
使用 Fixed-Point Designer™ 设计和仿真定点系统。

在 R2006a 之前推出