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

1 次查看(过去 30 天)
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 个评论
Azzi Abdelmalek
Azzi Abdelmalek 2016-4-30
Posting images is not useful for someone who wants test your data. It easier for everyone if you post your data with the format you are using in Matlab (just copy and paste your data), we have not to ask if it's a cell array containing double or char variables.
angelavtc
angelavtc 2016-4-30
编辑:angelavtc 2016-4-30
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

请先登录,再进行评论。

采纳的回答

CS Researcher
CS Researcher 2016-4-30
编辑:CS Researcher 2016-4-30
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 个评论
angelavtc
angelavtc 2016-4-30
编辑:Azzi Abdelmalek 2016-4-30
@CS Researcher that is perfect, but it gives me cells in columns, like this:
[199001021000.000;199001021005.000;199001021010.000;199001021015.000;199001031000.000;199001031005.000;199001031010.000;199001031015.000]
[199001021001.000;199001021006.000;199001021011.000;199001031001.000;199001031006.000;199001031011.000]
[199001021002.000;199001021007.000;199001021012.000;199001031002.000;199001031007.000;199001031012.000]
[199001021003.000;199001021008.000;199001021013.000;199001031003.000;199001031008.000;199001031013.000]
[199001021004.000;199001021009.000;199001021014.000;199001031004.000;199001031009.000;199001031014.000]
I would like to substitute the ";" for "," Can you help me with this? The final code that I used was this:
C5 = cell(1,5); % Pre-allocate the cell array
for i = 1:5
C5{:,i} = C(mod(C,5) == i-1);
end
C6=C5'

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Matched Filter and Ambiguity Function 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by