how to loop in one time to get the max value minus the min value.

Jan Risn (view profile)

on 11 Jul 2019
Latest activity Commented on by Jan Risn

Jan Risn (view profile)

on 11 Jul 2019
I have data in the workspace in 2 columns
year/ month / date hour minute seconds data
(1856x2)cell
output1 =
2015 12 19 02 40 0 ​​ 0
2015 12 19 02 50 0 ​​ 0
2015 12 19 03 00 0 ​​ 0
2015 12 19 03 10 0​​ 2.2
2015 12 19 03 20 0 ​​ 0
2015 12 19 03 30 0 ​​ 4.6
2015 12 19 03 40 0 ​​ ​​ 4.6
2015 12 19 03 50 0 ​​ 4.6
2015 12 19 04 00 0 ​​ 4.6
2015 12 19 04 10 0 ​​ 4.6
2015 12 19 04 20 0 ​​ 4.6
2015 12 19 04 30 0 ​​ 4.6
2015 12 19 04 40 0 ​​ ​​ 4.6
2015 12 19 04 50 0 ​​ 4.6
2015 12 19 05 00 0 ​​ 4.6
2015 12 19 05 10 0 ​​ 4.6
2015 12 19 05 20 0 ​​ 4.6
2015 12 19 05 30 0 ​​ 4.6
2015 12 19 05 40 0 ​​ ​​ 4.6
2015 12 19 05 50 0 ​​ 3
......
I want to reduce data in 1 hour (50 minutes - 00 minutes)
the last minute data was reduced by the initial minute in one hour
example:
2015 12 19 03 50 0 4.6
-
2015 12 19 03 00 0 0
obtained value =
2015 12 19 03 00 0 4.6
So that i get 1 data in one hour.
if i get a value (-) minus is considered zero
and I get data in one hour on each date in one year.
I tried the following data script and I felt wrong in making the program.
T = output1(:,1);
D = datenum(T,'dd-mm-yy HH:MM');
Days = day(D);
Months = month(D);
Hours = hour(D);
Minutes = minute(D);
C = output1(:,2);
M = cell2mat(C);
max_minutes = zeros(23,2); min_days = zeros(23,2);
for i = 0:23
if nonzeros(M(Days==i))
[max_minutes(i,1) max_minutes(i,2)] = max(M(Days==i));
Hours_temp = Hours(Days==i);
Minutes_temp = Minutes(Days==i);
max_hour(i) = Hours_temp(max_minutes(i,2));
max_minute(i) = Minutes_temp(max_minutes(i,2));
[min_days(i,1) min_days(i,2)] = min(M(Days==i));
min_hour(i) = Hours_temp(min_days(i,2));
min_minute(i) = Minutes_temp(min_days(i,2));
else
max_minutes(i,1:2) = NaN;
min_days(i,1:2) = NaN;
end
end
I thank everyone who helped me in resolving my difficulties.
I use matlab 2014a, which uses the old function so there are some programs whose functions are not readable in my matrix

Andrei Bobrov (view profile)

on 11 Jul 2019

[a,~,c] = unique(cdata{1}(:,1:4),'rows','stable');
out = [a,accumarray(c,cdata{2},[],@(x)max(x) - min(x))];

Andrei Bobrov

Andrei Bobrov (view profile)

on 11 Jul 2019
time1 = datevec(cdata(:,1));
[a,~,c] = unique(time1(:,1:4),'rows','stable');
out = [cellstr(datestr([a,zeros(size(a,1),2)])),...
num2cell(accumarray(c,cat(1,cdata{:,2}),[],@(x)max(x) - min(x)))];
Andrei Bobrov

Andrei Bobrov (view profile)

on 11 Jul 2019
last variant:
time1 = datevec(cdata(:,1));
d = cat(1,cdata{:,2});
[a,~,c] = unique(time1(:,1:4),'rows','stable');
out = [cellstr(datestr([a,zeros(size(a,1),2)])),...
num2cell(accumarray(c,(1:numel(d))',[],@(x)innerfun(d,x)))];
function out = innerfun(d,x)
k = d(sort(x));
out = max(0,k(end) - k(1));
end
Jan Risn

Jan Risn (view profile)

on 11 Jul 2019
thank you very much sir, this is very helpful ..