matlab强力索引

matlab强力索引,matlab,for-loop,brute-force,Matlab,For Loop,Brute Force,嗨,我正在使用蛮力法来检查“面板”和“涡轮机”的可能组合 我的代码是 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

嗨,我正在使用蛮力法来检查“面板”和“涡轮机”的可能组合

我的代码是

 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

您的问题是,您将
赤字
结果存储为值
n
的函数,即每天的小时数。在围绕
n
的内部循环中,每次都通过外部循环替换值,因此在运行结束时,只有
n=1:24
的值位于
number\u面板
=5和
number\u涡轮机
=10

试试这个:

deficit(number_panels+1, number_turbines+1, n) = ...
这样,在最后,您可以检查给定三个索引的任何组合。我给number_Panel和number_turbines添加了一个值1,因为MATLAB使用基于1的索引。要获得特定数量面板或涡轮机的结果,请确保在检查时添加1

具体而言,对于3个面板和4个涡轮机,在一天中的第5小时:

disp(赤字(3+1,4+1,5))


编辑:在
数字面板
数字涡轮机
的值中添加1,以避免0索引。

函数计算效率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(panels+1,number_turbines+1,hour)

如果你发布一篇语法正确的Matlab文章,我们中的一些人会剪切并粘贴它,看看我们是否可以运行它并解决你的问题。您发布的内容在语法上不正确。为了帮助您,我可能不是唯一一个懒得对代码进行基本修改的人。帮你自己一个忙,自己改正。嗨,谢谢你的建议,虽然我不太确定问题出在哪里。除了说明24x1的需求量、PV_供应量和WT_供应量外,在信息方面还需要什么?我上面所说的有什么问题吗?我是一个初学者,所以我肯定需要所有我能得到的建议/指导。谢谢
Demand=randn(24,1); PV_supply=randn(24,1); WT_supply=randn(24,1); test(Demand,PV_supply,WT_supply)
Demand(panels+1,number_turbines+1,hour)