2012-07-03 292 views
0

我有以下代碼「for」循環不循環

我試圖優化linprog在8760點的數據集,但似乎無法得到循環去爲每一行。
當我運行它時,我得到A的大小爲1x30(當它應該是8760乘30)。

有沒有人看到我錯誤地編碼了?

回答

1

是,每次你運行它要覆蓋一個與單行時間[PVtech(I,:) WTtech(I,:)]

試試這個:A = [A; PVtech(i,:) WTtech(i,:)];即垂直串聯

隨着預分配你的代碼應該是這樣的:

numRows = 8760; 
A = zeros(numRows, 30); 

for i = 1:numRows 

    A(i,:) = [PVtech(i,:) WTtech(i,:)]; 

    b = demand(i); 

    f = [CRF*PVtechcost(i,:).*PVcap(i,:)./PVtech(i,:) CRF*WTtechcost(i,:).*WTcap(i,:)./WTtech(i,:)]; 

    x(i) = linprog(f, A,b,[], [], lb); 

end 
+0

感謝丹但是,讓我 – user643469

+3

未定義的變量錯誤嘗試循環之前預分配:'A =零(8760,30)',並以'A(我,:) = [PVtech(我,:) WTtech(我,:)]' – Amro

+0

是的,你必須d eclare第一個,所以你可以嘗試A = []但它更快,因爲@Amro已經指出要預先分配,所以也許A =零(8760,30) – Dan