subsetting dates in a matrix

조회 수: 6 (최근 30일)
Cagdas Ozgenc
Cagdas Ozgenc 2013년 11월 1일
댓글: Cedric 2013년 11월 1일
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) ;
  댓글 수: 2
Cagdas Ozgenc
Cagdas Ozgenc 2013년 11월 1일
Thanks. In this scenario this is a good option.
Cedric
Cedric 2013년 11월 1일
You're welcome.

댓글을 달려면 로그인하십시오.

추가 답변 (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에서 Dates and Time에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by