2012-07-03 66 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