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在這個代碼 有誰知道如何進行索引「F」這樣做呢?

謝謝

回答

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(:,M,N)時,寫入「A」的行仍然出現錯誤(下標分配尺寸不匹配。 ) – user643469