根据其名称在脚本中使用工作区中的结构值
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
我正在处理一个项目,我需要使用工作区中的某些变量,而我只有它们的名称作为 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