0

私は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 を使用せずに行うことをお勧めします。これは (私が聞いたように) 非常に遅く、モデルは非常に多くのノードとフラックスに拡張されるためです。

4

1 に答える 1

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
于 2012-04-26T09:37:43.357 に答える