'来自工作区'的输入参数在Simulink阻止

时间:2015-12-03 08:40:47

标签: matlab import signals simulink workspace

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

  

Measurements.B_cal.value

但是我无法设置输入参数。有人可以帮我这个吗?

1 个答案:

答案 0 :(得分:2)

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

  

评估为以下之一的MATLAB表达式:

     
      
  • MATLAB时间序列对象
  •   
  • MATLAB时间序列对象的结构
  •   
  • 二维矩阵:   每个矩阵行的第一个元素是时间戳。   每行的其余部分是信号值的标量或向量。
  •   
  • 有或没有时间的结构,包含:   1)signal.values字段,其包含信号值的矢量   2)可选的signals.dimensions阵列,包含信号的尺寸   3)可选的时间向量,包含时间戳
  •   

您可以在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并添加

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

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

mystruct.time = [];

3)如果您不想更改结构,可以使用下一步:

t = (1:10)'; %'

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

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