time series, find number of times a value is reached
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Hello,
I have a multi-year temperature time-series. I want to know how many times temperature drops a given amount (say, 5C) over a given time limit (say, within 6 hrs) within each year. Then, I would like to make a box plot to compare across each year. I have a temp variable, yr variable, month variable, day variable and hr variable. For example, there may have been 300 6C drops in 2014, 200 6C drops in 2013, etc. Your help is appreciated!
***I have made some progress on this, although it is only over the time limit of 1 day rather than 6 hrs
[DMY ID]=findgroups(day,month,yr); %find groups of day month and year
maxt=splitapply(@max,temp,DMY); %find max of each DMY
mint=splitapply(@min,temp,DMY); %find min of each DMY
difft=maxt-mint; %calculate the difference
[c ia c]=unique(DMY);
table=[difft day(ia) m(ia) yr(ia)]; %create table with new data
I think the next step is to find how many times the difft is >=5 within each yr
[D ID]=findgroups(yr(ia));
myfunc=@(x)[find(x>5)];
xxx=splitapply(myfunc,difft,D); % this gives me error:
% The function '@(x)[find(x>5)]' returned a non-scalar value when applied to the 1st group
% of data.
%
% To compute nonscalar values for each group, create an anonymous function to return each
% value in a scalar cell:
%
% @(x){[find(x>5)]}
0 comentarios
Respuestas (1)
Image Analyst
el 19 de Dic. de 2020
You forgot to attach any data. So here is untested code:
[~, numDrops] = bwlabel(diff(y) <= -6);
where y is your temperature measurement in 6 hour increments.
2 comentarios
Image Analyst
el 19 de Dic. de 2020
If you don't have bwlabel(), you can use (the less convenient) findgroups(). You can do
y = randi(100, 1, 20) % Create sample data.
differences = [0, diff(y)]
d = double(differences <= -6)
numGroups = length(strfind(d, [0 1]))
where y is your data at every 6 hour period. I'm sure you can figure out how to manipulate your time data into an array sampled every 6 hours. You don't need us to do that part for you, do you?
Ver también
Categorías
Más información sobre Dates and Time en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!