根据其名称在脚本中使用工作区中的结构值

Using a value of a struct from workspace in a script based on its name

我正在处理一个项目,我需要使用工作区中的某些变量,而我只有它们的名称作为 char 数组。

举个例子,我有数组

var_names = {'var1', 'var2', ... } 

并且这些变量(以及许多其他变量)在工作区中作为具有多个属性的结构 - 值、class 等(我相信这些是 Simulink 生成的,但我不确定)。

为简化起见,假设我有名字 {'var1'、'var2'},我需要将它们的值乘积

prod = var1.Value * var2.Value 

我试过

var_names(1).Value * var_names(2).Value 

和类似的更明显的尝试,但 none 成功了。请注意 - 由于变量的结构性质,eval 不起作用,我需要其他东西。

通过名称获取变量的标准方法是使用 eval。重要的是确保评估正确的文本:

names = {'var1', 'var2'};
x1 = eval(names{1});
x2 = eval(names{2});
prod = x1.Value * x2.Value