2015-05-02 3 views
0

У меня есть 2192 растров, представляющих ежедневные временные климатические данные (1 jan 2008-31 mar 2013), которые я хотел бы объединить в ежемесячные средства (то есть усреднить все данные в пределах данный месяц & год).Использование Matlab для среднесуточных данных (растров) для среднемесячных значений

Я могу загрузить данные в Matlab для создания 3D-матрицы размером 110x57x2192. 2192 представляет измерение времени от jan 2008-31 до 31 марта 2013 года.

Я пробовал это, используя нумерацию в excel, но я не уверен, как установить синтаксис справа. Ежемесячные средства должны идеально заменять импортированные суточные данные в памяти. Моя нумерация в Excel имеет четыре столбца: дата, день, месяц и год. Любой пиксель NA игнорируется, а среднее значение для пикселя основано на не NA пикселах за данный месяц.

%create monthly averages from daily data 
numbering = xlsread('Numbering.xslx', B1:D2192); 
month=numbering(:,2); 
years=unique(year); 

Вот первые три и последние три строки из моего файла первенствовать для нумерации

1/01/2008 1 1 2008
2/01/2008 2 1 2008
3/01/2008 3 1 2008
29/12/2013 29 12 2013
30/12/2013 30 12 2013
31/12/2013 31 12 2013
31/12/2013 31 12 2013

+0

Действительно ли это дата, месяц и год или ** день **, месяц и год, которые у вас есть в Excel? – brodoll

+0

Обратите внимание, что данные не находятся в excel, а в приведенном выше коде. Я пытаюсь использовать excel для создания индекса. Файл excel имеет 4 столбца d/m/yy; день, месяц и год – Joe

ответ

1

Вот как я бы решить эту проблему:

% Getting month breaks by detecting changes in days 
day=numbering(:,2); % Day column from Excel 
final_idx = find(diff(day)~=1); 
initial_idx = [1 ; final_idx(1:end-1)-1]; 

%Number of months 
nom = length(final_idx); 

% Pre-allocating space for monthly mean 
monthlymeans = nan(110,57,nom); 

% Calculating means 
for ii=1:nom 
    monthlymeans(:,:,ii) = nanmean(3dmatrix(:,:,initial_idx(ii):final_idx(ii)),3); 
end 

Обратите внимание, что я принял данные, содержится в переменной называется 3dmatrix и пиксельные значения NA фактически являются NaN, так как я не имею доступ к исходным данным.

+0

>> день = нумерация (:, 1); final_idx = diff (день) ~ = 1; initial_idx = [1 final_idx (1: end-1) -1]; Ошибка при использовании horzcat Размеры конкатенированных матриц несовместимы. – Joe

+0

строка с initial_idx вызывает ошибку. также в рабочей области измерение для «nom» равно 2191, что составляет количество дней. Я не добирался до калибровочных средств, поскольку initial_idx не работал. просто в том, что он имеет отношение к моему моему excel, столбец A - m/d/y; B - день, C - месяц, а D - год. Sporeadsheet не имеет заголовка. – Joe

+0

пс. значения пикселов NA - NaN; данные содержатся в трехмерной матрице (3dmatrix, как вы ее называли), размер времени - дни. – Joe

Смежные вопросы