我有一个.mat文件,其结构已加载到Workspace中。我创建了一个simulink模型,并希望从Workspace导入信号。 '来自工作区'的数据参数的输入值应该是多少?块。结构的名称是Measurements,Signal Name是B_cal,它还有其他元素,如时间,名称,单位和值。我知道可以通过这个命令来访问结构:
Measurements.B_cal.value
但是我无法设置输入参数。有人可以帮我这个吗?
答案 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;
此处重要时刻:t
和v
必须是一列!行不行!
如果您需要使用多行数据,请使用多维v
并添加
measure.signals.dimentions = size(v,2);
2)您可以看到time
字段是可选的。如果没有,则需要在0以外的块中设置采样时间,并清除插值数据,在最终数据值之后将表格输出设置为除外推之外的值。此外,您需要定义时间字段:
mystruct.time = [];
3)如果您不想更改结构,可以使用下一步:
t = (1:10)'; %'
并在FromWorkspace块的数据中设置:[t, Measurements.B_cal.value]
。
4)有一些有用的方法:使用时间序列或仅使用矩阵。但是如果你需要使用你的结构,那么你的情况并非如此。