0

«Несоответствие размеров подзаголовков.» при выполнении кодирования linprog.linprog - ошибка «Несоответствие размеров подстрочного присваивания»

Мой код

for M = 1 : size(PV_output,1) 
for N = 1 : size(WT_output,2) 


    f(:,M:N) = [((CRF*CC_PV(M)/PVenergy(M)+OM_PV)); ((CRF*CC_WT(N))/WTenergy(N))+OM_WT]; % Objective function coefficients 

    %A(:,:) = [-PV_output(:,:,K) -WT_output(:,:,L)]; 
    A (:,M,N) = [-PV_output(:,M) -WT_output(:,N) ]; 

    b(:,:) = -Demand(:); 

    lb = zeros(2,1); 

    ub = [max_PV_area/PV_area; max_WT_area/WT_area]'; 

end 
end 
[x, fval, exitflag] = linprog(f,A,b,[],[],lb,ub) 

PV_output является 8760x1x27 и WT_output является 8760x1x3

Я пытаюсь найти «F» коэффициенты ниже для всех комбинаций 27 и 3 PV и WT-х в этом коде кто-нибудь знает, как индексировать «е», чтобы сделать это?

Спасибо

ответ

0

Ваш первый Проблема заключается в том, что вам нужно, чтобы получить размер третьего измерения матриц:

for M = 1 : size(PV_output,3) %# <---3, not 1 
    for N = 1 : size(WT_output,3) %# <---3, not 1 

Далее, вы не хотите (:,M:N) а (:,M,N)

f(:,M,N) 

Существует вероятность больше. Это должно заставить вас начать; и используйте отладчик, чтобы определить размеры размеров ваших матриц, и убедитесь, что они такие, какими вы считаете. Например, вы не можете добавлять матрицы разных размеров вместе, поэтому убедитесь, что размеры одинаковые.

+0

Я пробовал этот код, как было предложено - когда я проверяю размер f, это 2x1. Я считаю, что это должно быть 2x1x81, где 81 представляет все комбинации (27 * 3), которые могут быть сделаны? Я все еще получаю сообщение об ошибке в строке, где написано «A» (несоответствие размера подзаголовка ) при попытке формата A (:, M, N) – user643469