сумма трехмерной матрицы - Matlab Brute force

Привет, у меня есть трехмерная матрица в коде ниже. Я пытаюсь суммировать все 24 элемента "n" для каждой комбинации "number_panels" и "number_turbines".

то, что у меня есть ниже, не суммируется в 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

person user643469    schedule 14.07.2012    source источник
comment
вы пытаетесь вычислить только сумму 3D-матрицы?   -  person TJ1    schedule 14.07.2012
comment
хорошо, как я его создал, я пытаюсь суммировать по n измерению, поэтому да, я пытаюсь суммировать 3D-матрицу   -  person user643469    schedule 14.07.2012
comment
Я ожидал, что это сработает, но это не так: daily_deficit(number_panels + 1, number_turbines + 1) = sum(hourly_deficit(number_panels + 1, number_turbines + 1),3)   -  person user643469    schedule 14.07.2012
comment
Я просто получаю ваш код, похоже, конца ваших циклов for нет. если вы разместите свой полный код, я могу помочь.   -  person TJ1    schedule 14.07.2012
comment
я отредактировал код выше в своем исходном сообщении   -  person user643469    schedule 14.07.2012


Ответы (1)


В MATLAB sum(X) складывает все элементы матрицы X в одном измерении. Если вы хотите просто рассчитать сумму для одного конкретного измерения, используйте:

 S1=sum(X,dimension);

где «размерность» равна 1, 2 или 3 для трехмерной матрицы.

Если вы хотите вычислить два измерения, вы можете сделать:

 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,:));

person TJ1    schedule 14.07.2012
comment
Я все еще получаю тот же ответ, который неверен с вашим предложением. - person user643469; 14.07.2012
comment
какой у тебя х? это 3д матрица? - person TJ1; 14.07.2012
comment
глядя на это: сумма (часовой_дефицит (число_панелей + 1, число_турбин + 1)), в сумме () есть только один элемент, и сумма ничего для вас не делает. Вы пытаетесь сделать это: sum(sum(hourly_deficit(number_panels + 1: number_turbines + 1))) - person TJ1; 14.07.2012
comment
дневной_дефицит (количество_панелей + 1, количество_турбин + 1) = сумма (сумма (сумма (часовой_дефицит (количество_панелей + 1, количество_турбин + 1))) - person user643469; 14.07.2012
comment
Итак, в основном я пытаюсь суммировать каждую комбинацию number_panel и number_turbine по n измерениям. Поэтому я должен получить матрицу number_turbine x number_panel с элементом в каждой позиции, представляющим сумму 24 значений. - person user643469; 14.07.2012
comment
должен ли hourly_deficit быть трехмерной матрицей? - person TJ1; 14.07.2012
comment
хорошо, как я сказал, сделайте это: daily_deficit(number_panels + 1, number_turbines + 1) = sum(sum(sum(hourly_deficit(:,:,:))); - person TJ1; 14.07.2012