Average of irregular range of data
조회 수: 2 (최근 30일)
이전 댓글 표시
I have a time series of satellite data over a bout 6 years. With each pass of the satellite a number of measurements are taken. The number of measurements taken is non-uniform, so anywhere between 2 and 7 for a given pass of the satellite. This occurs every 10 days but there are occasions when the satellite misses a pass. I want to get the average of each pass without having to go through the data and inputting the correct ranges manually. Is there a way of setting a rule so that when the time between two measurements is greater than say a day a new range of data is selected? Any help would be appreciated.
댓글 수: 2
답변 (2개)
Azzi Abdelmalek
2013년 8월 15일
편집: Azzi Abdelmalek
2013년 8월 15일
data={'09/01/2003 21:05 1.73'
'09/01/2003 21:05 2.196'
'09/01/2003 21:05 1.979'
'19/01/2003 19:03 6.507'
'19/01/2003 19:03 6.676'
'29/01/2003 17:02 6.132'
'29/01/2003 17:02 6.379'
'29/01/2003 17:02 5.714'
'08/02/2003 15:00 5.019'
'08/02/2003 15:00 4.671'
'08/02/2003 15:00 4.814'
'08/02/2003 15:00 4.783'
'08/02/2003 15:00 4.334'}
dates= datenum(data,'dd/mm/yyyy');
weights=cellfun(@(x) str2double(x{3}),regexp(data,'\s+','split'));
[a,b,c]=unique(dates);
average_values=accumarray(c,weights,[],@mean);
out=[cellstr(datestr(dates(b))) num2cell(average_values)]
%or
dates=datenum(data,'dd/mm/yyyy');
s=regexp(data,'\s+','split');
s=[s{:}];
weights=str2double(s(3:3:end))';
[a,b,c]=unique(dates);
average_values=accumarray(c,weights,[],@mean);
out=[cellstr(datestr(dates(b))) num2cell(average_values)];
댓글 수: 0
Andrei Bobrov
2013년 8월 15일
편집: Andrei Bobrov
2013년 8월 15일
tresh = 2; % Let greate than two days
f = fopen('PathAndNameYourdata.txt');%'E:\wtdy2.txt'
c = textscan(f,'%s %s %f','CollectOutput',true);
fclose(f);
k = strcat(c{1}(:,1),{' '},c{1}(:,2));
n = datenum(k,'dd/mm/yyyy HH:MM');
ii = [true;diff(n)>tresh];
i1 = cumsum(ii);
i2 = find(ii);
out = [{'start','finish','mean of value'};
[k([i2,[i2(2:end)-1;numel(n)]]), accumarray(i1,c{2},[],@(x){mean(x)})]];
댓글 수: 3
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!