2012-07-03 3 views
0

будет иметь следующий код«для» петли я не петли

Я пытаюсь оптимизировать linprog над данными 8760 набор, но не похоже, чтобы получить петлю будет для каждой строки.
Когда я запускаю его, я получаю размер `A, равный 1x30 (когда это должно быть 8760 на 30).

Кто-нибудь видит, где я ошибался?

ответ

1

Да, каждый раз, когда вы запускаете его вы перезапись с одной строки [PVtech (я, :) WTtech (я, :)]

Попробуйте это: 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 (i, :) = [PVtech (i, :) WTtech (i, :)] ' – Amro

+0

Да, вы должны d eclare Сначала, чтобы вы могли попробовать A = [], но это быстрее, чем @Amro указала на предварительное распределение так, возможно, A = нули (8760,30) – Dan

Смежные вопросы