hourly average of multiple column data
1 view (last 30 days)
Show older comments
I have made a code to calculate hourly average of minute data. But it works only for single column. I have multiple column of concentration data. How can i get the desired answers. pls help.
day1hour=hour(date==1);
day1bc=BC(find(hour(date==1)));
maxday1=max(day1hour);
for i=1:max(day1hour)
ll= find(day1hour==i);
fffff=BC(ll);
mean_BC_hourly1(i,:)=mean(fffff);
end
The input datas are:
day hour Con 1 con2
1 1 10 20
1 1 20 40
1 2 30 60
1 2 40 80
1 3 50 100
1 3 60 120
1 3 70 140
The answer expected:
con1avg con2avg
15 30
35 70
60 120
2 Comments
Guillaume
on 12 May 2016
Note that none of the find in your code are necessary. They just slow down the processing.
day1bc = BC(hour(date == 1))); %works just as well
Star Strider
on 12 May 2016
See also: http://www.mathworks.com/matlabcentral/answers/283934-hourly-average-of-multiple-column-data that seems to be an essential duplicate.
Answers (1)
Guillaume
on 12 May 2016
Edited: Guillaume
on 12 May 2016
m = [1 1 10 20
1 1 20 40
1 2 30 60
1 2 40 80
1 3 50 100
1 3 60 120
1 3 70 140]
[dayhour, ~, destrow] = unique(m(:, [1, 2]), 'rows');
subs = [repmat(destrow, 2, 1), repelem([1;2], numel(destrow))];
hourlymean = accumarray(subs, reshape(m(:, [3, 4]), [], 1), [], @mean);
array2table([dayhour, hourlymean], 'VariableNames', {'day', 'hour', 'con1avg', 'con2avg'})
2 Comments
Guillaume
on 12 May 2016
colstoaverage = 3:12;
subs = [repmat(destrow, numel(colstoaverage), 1), repelem((1:numel(colstoaverage))', numel(destrow))];
hourlymean = accumarray(subs, reshape(m(:, colstoaverage), [], 1), [], @mean)
See Also
Categories
Find more on Data Type Conversion in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!