您好我正在使用蛮力方法来检查“面板”和“涡轮机”的可能组合
我的代码是
for number_panels = 0:5
for number_turbines = 0:10
for n = 1:24 % number of hours per day
deficit(n) = Demand(n) - (PV_supply(n)*number_panels) -...
(WT_supply(n)*number_turbines);% hourly power deficit
if deficit(n)<0
deficit(n) = 0;
end
我上面遇到的问题是我还没有想出这段代码的正确索引。
我想要做的是找到“number_panels”,“number_turbines”和“n”的“赤字”。就目前而言,我只能找到最后一个循环的“赤字”。 我如何编码以便我可以选择访问第n行(或“n”组,即1-24)以及“number_panels”“number_turbines”选项?
谢谢 - 为了找到每个赤字(n)值的总和,从而得到24小时期间各自的总赤字,我做了以下,在我看来能够做我想问的但是我得到的答案不正确:
daily_deficit(number_panels + 1, number_turbines + 1) =...
sum(deficit(number_panels + 1, number_turbines + 1,n)) –
答案 0 :(得分:0)
您的问题是,您将deficit
结果仅存储为值n
的函数,即每天的小时数。在n
周围的内部循环中,每次通过外部循环都会继续替换值,因此在运行结束时,n = 1:24
= number_panels
处的number_turbines
值只有deficit(number_panels+1, number_turbines+1, n) = ...
和disp(deficit(3+1, 4+1, 5))
= 10。
试试这个:
number_panels
最后,你可以检查给定三个指数的任何组合。我在number_panels和number_turbines中添加了值1,因为MATLAB使用了从1开始的索引。要获得特定数量的面板或涡轮机的结果,请确保在检查时添加1。
具体而言,当天5小时的3个面板和4个涡轮机:
number_turbines
编辑:为{{1}}和{{1}}的值添加1以避免0索引。
答案 1 :(得分:0)
function calcDeficit.m:
File Edit Options Buffers Tools ObjC Help
function deficit = calcDeficit (Demand, PV_supply, WT_supply)
% initialize the size (good practice)
deficit = zeros(6,11,24);
for number_panels = 0:5
for number_turbines = 0:10
for n = 1:24 % number of hours per day
deficit(number_panels+1,number_turbines+1,:) = Demand(n) - (PV_supply(n)*number_panels) -...
(WT_supply(n)*number_turbines);% hourly power deficit
if deficit(n)<0
deficit(n) = 0;
end
end
end
end
return
示例电话:
Demand=randn(24,1); PV_supply=randn(24,1); WT_supply=randn(24,1); test(Demand,PV_supply,WT_supply)
您可以通过
访问DemandDemand(panels+1,number_turbines+1,hour)