Привет

У меня есть массив данных (мат) со следующими размерами: 149016x93

Столбцы

год | месяц | день | час | данные 1 | данные 2 | данные 3 | и так далее до данных 89

2001 | 1 | 1 | 0 | случайные числа…

… | … | … | … | случайные числа…

2017 | 12 | 31 | 23 | случайные числа…

Данные случайны, и это то, что я хочу усреднить.

Я нашел этот пример (пример MathWorks), и он в порядке, однако я изо всех сил пытался запустить его в столбцах с 5 по 93…

[ah,~,ch] = unique(mat(:,2:4),'rows');
hraverage = [ah,accumarray(ch,mat(:,5),[],@nanmean)];

Проблема в том, что я не могу получить на выходе массив 8784x93, только 8784* x 4, я пробовал циклы, но упускаю что-то, о чем я не знаю…

*Набор данных содержит данные за несколько лет. Я хочу среднее значение часа для каждого дня в году. Итак, 366 дней * 24 часа = 8784.

для примера, пожалуйста, не стесняйтесь рассматривать меньший массив.

спасибо за внимание! буду продолжать копать в этом…

примерные данные во вложении. генерируется случайным образом:

4 первых столбца: год, месяц, день, час, а столбцы с 5 по 7 — столбцы данных.

окончательный результат должен быть файлом 8784x7.

ПРИМЕЧАНИЕ. 

Matlabsolutions.com предоставляет последнюю Помощь по домашним заданиям MatLab, Помощь по заданию MatLab для студентов, инженеров и исследователей в различных отраслях, таких как ECE, EEE, CSE, Mechanical, Civil со 100% выходом. Код Matlab для BE, B.Tech ,ME,M.Tech, к.т.н. Ученые со 100% конфиденциальностью гарантированы. Получите проекты MATLAB с исходным кодом для обучения и исследований.

Есть более простой способ сделать это с помощью groupsummary.

Я импортировал данные выборки и сделал таблицу с 7 столбцами:

Год, Месяц, День, Час, VarName5, VarName6, VarName7

Затем использовали следующие команды, чтобы воспользоваться биннингом в groupsummary и возможностью включать пустые группы:

sampledata.Time = datetime(sampledata.Year,sampledata.Month,sampledata.Day)
result = groupsummary(sampledata,{'Time','Hour'},{'dayofyear','none'},'mean',{'VarName5','VarName6','VarName7'},'IncludeEmptyGroups',1)

СМОТРИТЕ ПОЛНЫЙ ОТВЕТ НАЖМИТЕ НА ССЫЛКУ