在Matlab中使用表中的变量名

时间:2012-04-26 08:55:11

标签: matlab variables eval

我在Matlab中编写了一个小模型。该模型分析了几个供应节点,以满足需求节点中所需的需求量。供应节点在向量中指定,其中对于每个时间步,给出可用供应。

为了满足需求,随后分析供应节点是否能够满足需求,并且相应地更新从供应节点到需求节点的通量。此分析现在使用固定顺序,该顺序由脚本代码定义。在伪代码中:

for timestep=1:end
     if demand(timestep) > supply_1(timestep)
          supply_1_demand(timestep) = supply_1(timestep)
     else
          supply_1_demand(timestep) = demand(timestep)
     end

     if remaining_demand(timestep) > supply_2(timestep)
          supply_2_demand(timestep) = supply_2(timestep)
     else
          supply_2_demand(timestep) = demand(timestep)
     end

     # etcetera, etcetera
end

但是,必须改变分析供应节点的顺序。我想从表中读取此顺序,其中分析顺序由它们在表中显示的顺序给出。因此,表格看起来像这样

 1   supply_4
 2   supply_1
 3   supply_5
 # etcetera

有没有办法从这样的表中读取变量名?优选地,这将不使用eval,因为这非常慢(正如我所听到的),并且模型将扩展到相当多的节点和通量。

1 个答案:

答案 0 :(得分:1)

也许你可以使用结构:

varNames={'supp_1','supp_2','supp_3'};
supply.(varNames{1}) = 3; %%% set a variable by name
display(supply.(varNames{1})) %%% get value by name

ans =
       3