0

こんにちは私は以下のコードに3次元マトリックスがあります。「number_panels」と「number_turbines」の組み合わせごとに、「n」の24個の要素すべてを合計しようとしています。

私が以下に持っているものは、3次元全体で合計されません

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
4

1 に答える 1

1

MATLABでは、sum(X)は行列Xのすべての要素を1次元で追加します。1つの特定のディメンションの合計を計算するだけの場合は、次を使用します。

 S1=sum(X,dimension);

ここで、「次元」は1、2、または3Dマトリックスの場合は3です。

2次元にわたって計算する場合は、次のことができます。

 S2=sum(S1,dimension);

ここで、次元は1または2です。

あなたのコードに基づいて、私はあなたがforループでそれをしたいならこれがあなたがすべきことだと思います:

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

追加した「:」を見てください:sum(hourly_deficit(number_panels + 1、number_turbines + 1、:));

于 2012-07-14T13:30:17.270 に答える