Simulink 中 'From Workspace' 块的输入参数

Input Parameters of a 'From Workspace' Block in Simulink

我有一个 .mat 文件,其中的结构已加载到工作区中。我已经创建了一个 simulink 模型并想从工作区导入信号。 'From Workspace' 块的数据参数的输入值应该是多少。结构的名称是 Measurements,信号名称是 B_cal,它还有其他元素,如时间、名称、单位和值。我知道可以通过类似于此命令的方式访问结构:

Measurements.B_cal.value

但是我无法设置输入参数。谁能帮我解决这个问题?

通过 FromWorkspace 块使用结构有一些限制:

A MATLAB expression that evaluates to one of the following:

  • A MATLAB timeseries object
  • A structure of MATLAB timeseries objects
  • A two-dimensional matrix: The first element of each matrix row is a time stamp. The rest of each row is a scalar or vector of signal values.
  • A structure, with or without time, which contains: 1) A signals.values field, which contains a vector of signal values 2) An optional signals.dimensions array, which contains the dimensions of the signal 3) An optional time vector, which contains time stamps

您可以在 help 中找到更多有用的信息。

所以在你的情况下你可以使用不同的方法。我举几个例子:

1) 以必要的格式定义您的 struct

t = (1:10)'; %'
v = [6 9 3 1 7 0 7 3 8 1]'; %'
measure.time = t;
measure.signals.values = v;

重要时刻:tv必须是一列!行将不起作用! 如果您需要使用多行数据,请使用多维 v 和 add

measure.signals.dimentions = size(v,2); 

2) 您可以看到 time 字段是可选的。如果没有,则需要将块中的采样时间设置为 0 以外的值,并清除插值数据,将最终数据值后的表格输出设置为外推以外的值。此外,您需要定义时间字段:

mystruct.time = [];

3) 如果你不想改变你的结构,你可以使用next:

t = (1:10)'; %'

并在 FromWorkspace 块的数据中设置:[t, Measurements.B_cal.value].

4) 有一些有用的方法:使用时间序列或仅使用矩阵。但如果你需要使用你的结构,那不是你的情况。