Почему это для l oop не работает правильно? - PullRequest
0 голосов
/ 01 апреля 2020

У меня был этот код ниже:

for i = 1:numel(Class1_mon_avg_synop) %size of Class1_mon_avg_synop is 1 x 12 cell
    ave(i) = Class1_mon_avg_synop{1,i}.sum_rrr24(1); % first row in sum_rrr24 is for January
    Jan_class1_avg{i,1} = ave(i);
end
for i = 1:numel(Class1_mon_avg_grid) %size of Class1_mon_avg_grid is 1 x 12 cell
    ave(i) = Class1_mon_avg_grid{1,i}.sum_precip(1);% first row in sum_precip is for January
    Jan_class1_avg{i,2} = ave(i);
end


% Do same for next month


for i = 1:numel(Class1_mon_avg_synop)
    ave(i) = mean(Class1_mon_avg_synop{1,i}.sum_rrr24(2)); % second row in sum_rrr24 is for February                    
    Feb_class1_avg{i,1} = ave(i);
end
for i = 1:numel(Class1_mon_avg_grid)
    ave(i) = mean(Class1_mon_avg_grid{1,i}.sum_precip(2)); % second row in sum_rrr24 is for February                      
    Feb_class1_avg{i,2} = ave(i);
end
% do same for all other month
% ...

Поскольку я должен рассчитать это для всех 12 месяцев, то я написал это для l oop:

for i = 1:numel(Class1_mon_avg_synop)
    ave(i) = Class1_mon_avg_synop{1,i}.sum_rrr24(i);
    ave(i) = Class1_mon_avg_grid{1,i}.sum_precip(i);
    ALLMONTHS_class1_avg{i,i} = ave(i);
    ALLMONTHS_class1_avg{i,i+1} = ave(i);  
end

Но, к сожалению, я получил неправильный ответ:

Screen grab showing the contents of the cell array

Потому что я думаю, что это должно быть 12 х 24 ячейки. 1-й и 2-й столбец за 3 января и 4-й за февраль, et c ...

1 Ответ

0 голосов
/ 01 апреля 2020

Мне кажется, я заметил две проблемы: (а) вы переиграли ave(i), и (б) вы поставили значение в ALLMONTHS_class1_avg{i,i} и ALLMONTHS_class1_avg{i,i+1}, так что это диагональ и строка над диагональю. Согласно вашему примеру, у вас должна получиться ячейка 12 на 2.

Я предлагаю что-то вроде этого:

for i = 1:numel(Class1_mon_avg_synop)
    ave_1(i) = Class1_mon_avg_synop{1,i}.sum_rrr24(i);
    ave_2(i) = Class1_mon_avg_grid{1,i}.sum_precip(i);
    ALLMONTHS_class1_avg{i,1} = ave_1(i);
    ALLMONTHS_class1_avg{i,2} = ave_2(i);  
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...