Matlab中的特定时间范围

时间:2014-10-09 19:43:05

标签: matlab datetime time

我有一个时间序列xlsx数据,其中包含如下列的列。我想获取上午8:00:00到10:00:00之间的行数据以供我分析。任何人都可以帮助我吗?

Add         Velocity       Time
0.128835374 10.34912454 8:44:23 AM
0.20423977  8.078739988 8:47:01 AM
0.110629502 13.4081172  9:19:46 AM
0.088979639 5.057336749 9:24:02 AM
0.128835374 10.60785265 10:21:29 AM
0.20423977  9.46599837  10:23:06 AM

[num, txt] = xlsread('Consective_result.xlsx');
T = num(:,3);
TimeVector = datevec(T)

1 个答案:

答案 0 :(得分:4)

你几乎是对的。使用txt单元格数组的第三列,并跳过第一行,这样您就不会获得时间标题。我假设您的时间是以文字形式输入的。完成此操作后,只需使用datenum并确定晚于上午8:00且不到上午10:00的时间。 datenum可以方便地接收字符串的单元格数组,并输出一个数字向量,其中单元格数组中的每个时间字符串都转换为相应的数字表示。

找到这些行后,您可以使用我们刚才谈到的内容过滤掉numtxt中的每一行,然后再继续。因此:

[num, txt] = xlsread('Consective_result.xlsx');
times = txt(2:end,3); %// Get the 3rd column, skip 1st row
time_nums = datenum(times); %// Get the numerical representation of the times

%// Figure out those rows that are between 8:00 AM and 10:00 AM
times_to_choose = time_nums >= datenum('08:00:00AM') & time_nums <= datenum('10:00:00AM');

%// Remove those rows then continue
num(1 + times_to_choose) = [];
txt(1 + times_to_choose) = [];

请特别注意我在索引中添加了1,因为我们在电子表格中省略了time标题。现在,numtxt应仅包含上午8:00到10:00之间的那些时间。