subsetting dates in a matrix

2 次查看(过去 30 天)
Hello,
I have a time series in a matrix and first column is serial date numbers (up to millisecond precision), and other columns my samples. I would like to get those rows that belong to for example '12-Oct-2012'. I couldn't figure out how to write the logical operator to get a slice of this matrix. I would like to hopefully avoid some sort of slow string comparison.
Thanks in advance
  2 个评论
Azzi Abdelmalek
Azzi Abdelmalek 2013-11-1
Show the two first rows of your data
Cagdas Ozgenc
Cagdas Ozgenc 2013-11-1
编辑:Cagdas Ozgenc 2013-11-1
735236.4590277778 1.4264e+03 1.4272e+03 1.4217e+03
735236.4597222222 1.4237e+03 1.4252e+03 1.4234e+03
735236.4604166667 1.4247e+03 1.4267e+03 1.4244e+03

请先登录,再进行评论。

采纳的回答

Cedric
Cedric 2013-11-1
编辑:Cedric 2013-11-1
You already have serialized/numeric time stamps in you array, so just convert date boundaries to numeric, and compare numbers: assuming your array is named data..
lb_incl = datenum( '12-Oct-2012', 'dd-mmm-yyyy' ) ;
ub_excl = datenum( '13-Oct-2012', 'dd-mmm-yyyy' ) ;
id = data(:,1) >= lb_incl & data(:,1) < ub_excl ;
dailyMean = mean( data(id,2) ) ;
or
dailySlice = data(id,2:end) ;

更多回答(1 个)

Azzi Abdelmalek
Azzi Abdelmalek 2013-11-1
If A is your cell array
c1=cellstr(datestr(A(:,1),'dd-mm-yyyy'))
idx=ismember(c1,'12-10-2012')
out=A(idx,:)
  1 个评论
Cagdas Ozgenc
Cagdas Ozgenc 2013-11-1
Takes forever on my dataset of million lines. It converts all serial numbers back to string and then compares those strings. Then gets the indices. Then gets the data.
Thanks anyways

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Time Series Objects 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by