2012-04-26 28 views
0

我在Matlab中編寫了一個小模型。該模型在需求節點中分析幾個供應節點以滿足所需的需求量。供應節點在矢量中指定,其中對於每個時間步提供可用供應。在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

也許你可以使用結構:

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 
+0

感謝。我現在決定採取不同的路線:不是爲每個節點使用單獨的變量,而是將節點和通量組合在矩陣中。這樣,我只需使用一次文本變量就可以按照正確的順序創建矩陣(每一行都是一個節點或一個通量矢量)。之後,我可以循環遍歷矩陣,而不必使用帶有字符串和文本的複雜東西(我發現它在Matlab中非常笨拙)。 – 2012-05-02 11:17:58

+0

確實,這聽起來更好。 – Oli 2012-05-02 13:00:21