How can I filter a date column so it just considers every 5 minutes observations for each day?

1 view (last 30 days)
Hi everyone!
I have the next column where each number represents the date ('yyyymmddHHMM' in this order):
As you can see from the image here I have one year (1990), one month (january), two days (02 and 03) and different hours with one minute distance.
What I wanted to do is to filter this column for every 5 minutes. First starting every day in the first minute (10:00 vs 10:05) and continuing with the second minute (10:01 vs 10:06) and so on.
I have used the next comand to filter my data:
C5= cell(length(C)-2,1);
for ii=1:length(C5)
C5{ii} = C(ii:5:end)';
end
Obtaining the next results:
But as you can see my command is not restarting the 5 minutes jump when is another day and therefore the columns are "outdated" for my purposes.
For example, the first column form the last image should look this:
How can I modify my code so it restarts the 5 minutes jumps when is another day?
Thanks a lot for your help!
AngelaT
  2 Comments
angelavtc
angelavtc on 30 Apr 2016
Edited: angelavtc on 30 Apr 2016
OK then this is the original data type 32*1 double: [199001021000.000; 199001021001.000; 199001021002.000; 199001021003.000; 199001021004.000; 199001021005.000; 199001021006.000; 199001021007.000; 199001021008.000; 199001021009.000; 199001021010.000; 199001021011.000; 199001021012.000; 199001021013.000; 199001021014.000; 199001021015.000; 199001031000.000; 199001031001.000; 199001031002.000; 199001031003.000; 199001031004.000; 199001031005.000; 199001031006.000; 199001031007.000; 199001031008.000; 199001031009.000; 199001031010.000; 199001031011.000; 199001031012.000; 199001031013.000; 199001031014.000; 199001031015.000]
And this is the code that I use:
C5= cell(length(C),1);
for ii=1:length(C5);
C5{ii} = C(ii:5:end)';
end
And the one that give me the unwanted result that I mentioned before.
Thanks

Sign in to comment.

Accepted Answer

CS Researcher
CS Researcher on 30 Apr 2016
Edited: CS Researcher on 30 Apr 2016
You can use the mod operator. Lets say the data vector is x and it needs to rearranged in C. Try the following:
C = cell(1,5); % Pre-allocate the cell array
for i = 1:5
C{1,i} = x(mod(x,5) == i-1);
end
Hope this helps!
  2 Comments
angelavtc
angelavtc on 30 Apr 2016
Done, I tried this and it works:
for ii=1:5
C6{ii} = C6{ii}';
end
Thanks a lot to all of you, you really helped me a lot!

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by