求和三维矩阵 - Matlab蛮力 [英] sum 3dimensional matrix - Matlab Brute force

查看:422
本文介绍了求和三维矩阵 - Matlab蛮力的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你好,我在下面的代码中有三维矩阵。我试图将每个number_panels和number_turbines组合的所有24个元素n相加。



下面的内容不会在第三维中求和number_panels = 0:5



p>

 对于number_turbines = 0:2 

对于n = 1:24%每天的小时数


$ b hourly_deficit(number_panels + 1,number_turbines + 1,n)= Demand(n)-...
(PV_supply(n)* number_panels) - (WT_supply (N)* number_turbines);

如果hourly_deficit(number_panels + 1,number_turbines + 1,n)< 0

hourly_deficit(number_panels + 1,number_turbines + 1,n)= 0;


daily_deficit(number_panels + 1,number_turbines + 1)= sum(sum(sum(hourly_deficit(:,:,:))))



hour_total_RES(number_panels + 1,number_turbines + 1,n)= PV_supply(n)* number_panels + WT_supply(n)* number_turbines;


if hourly_total_RES(number_panels + 1,number_turbines + 1,n) Demand(n),

renewables_penetration(number_panels + 1,number_turbines + 1,n)=(hourly_total_RES(number_panels + 1,number_turbines + 1,n))/ Demand(n)可再生能源供应与需求的比例

else
renewables_penetration(number_panels + 1,number_turbines + 1,n)= 1;
$ b $ end
peak_deficit(number_panels + 1,number_turbines + 1,n)= max(hourly_deficit(number_panels + 1,number_turbines + 1,n));
end


解决方案

在一维中添加矩阵X的所有元素。
如果你想计算一个特定维度的总和,可以使用:

$ p $ ;

其中维度对于3D矩阵是1或2或3。

如果你想计算两个维度,那么你可以这样做:

$ $ $ $ $ $总和(S1,尺寸);

这里的维数是1或2。

基于你的代码,我认为这是你应该做的,如果你想在for循环中执行:

  for number_panels = 0:5 
对于number_turbines = 0:2
对于n = 1:24%每天的小时数
hourly_deficit(number_panels + 1,number_turbines + 1,n)= ..
Demand(n) - (PV_supply(n)* number_panels) - (WT_supply(n)* number_turbines);

如果hourly_deficit(number_panels + 1,number_turbines + 1,n)< 0
hourly_deficit(number_panels + 1,number_turbines + 1,n)= 0;
end
daily_deficit(number_panels + 1,number_turbines + 1)= ...
sum(hourly_deficit(number_panels + 1,number_turbines + 1,:));
end
end

查看我添加到的:
sum(hourly_deficit(number_panels + 1,number_turbines + 1,:));

Hi I have the 3 dimensional matrix in the code below. I am trying to sum all the 24 elements of "n" for every "number_panels" and "number_turbines" combination.

what I have below doesn't sum across the 3rd dimension

for number_panels = 0:5

for number_turbines = 0:2

    for n = 1:24 % number of hours per day



hourly_deficit(number_panels + 1, number_turbines + 1, n) = Demand(n) -...     
(PV_supply(n)*number_panels) - (WT_supply(n)*number_turbines);

if hourly_deficit(number_panels + 1, number_turbines + 1, n)< 0

            hourly_deficit(number_panels + 1, number_turbines + 1, n) = 0;

        end
daily_deficit(number_panels + 1, number_turbines + 1) = sum(sum(sum(hourly_deficit(:,:,:)))) 



        hourly_total_RES(number_panels + 1, number_turbines + 1, n) = PV_supply(n)*number_panels + WT_supply(n)*number_turbines;


        if hourly_total_RES(number_panels + 1, number_turbines + 1, n) < Demand(n),

            renewables_penetration(number_panels + 1, number_turbines + 1, n) = (hourly_total_RES(number_panels + 1, number_turbines + 1, n)) / Demand(n); % ratio of renewable energy supply to demand

        else
            renewables_penetration(number_panels + 1, number_turbines + 1, n) = 1 ;

        end
             peak_deficit(number_panels + 1, number_turbines + 1,n) = max(hourly_deficit(number_panels + 1, number_turbines + 1,n));
    end

解决方案

In MATLAB sum(X) adds all elements of matrix X in one dimension. If you want to just calculate the sum for one specific dimension use:

 S1=sum(X,dimension);

where "dimension" is 1, or 2, or 3 for a 3D matrix.

If you want to compute over two dimensions then you can do:

 S2=sum(S1,dimension);

where dimension here is 1, or 2.

Based on your code I think this is what you should do if you want to do it in for loops:

for number_panels = 0:5
   for number_turbines = 0:2
      for n = 1:24 % number of hours per day
         hourly_deficit(number_panels + 1, number_turbines + 1, n) =...
           Demand(n) - (PV_supply(n)*number_panels) - (WT_supply(n)*number_turbines);

         if hourly_deficit(number_panels + 1, number_turbines + 1, n)< 0
           hourly_deficit(number_panels + 1, number_turbines + 1, n) = 0;
      end
      daily_deficit(number_panels + 1, number_turbines + 1) = ...
        sum(hourly_deficit(number_panels + 1, number_turbines + 1,:));
    end
 end

Look at the ":" that I added to: sum(hourly_deficit(number_panels + 1, number_turbines + 1,:));

这篇关于求和三维矩阵 - Matlab蛮力的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆