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