我有一个时间序列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)
答案 0 :(得分:4)
你几乎是对的。使用txt
单元格数组的第三列,并跳过第一行,这样您就不会获得时间标题。我假设您的时间是以文字形式输入的。完成此操作后,只需使用datenum
并确定晚于上午8:00且不到上午10:00的时间。 datenum
可以方便地接收字符串的单元格数组,并输出一个数字向量,其中单元格数组中的每个时间字符串都转换为相应的数字表示。
找到这些行后,您可以使用我们刚才谈到的内容过滤掉num
和txt
中的每一行,然后再继续。因此:
[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
标题。现在,num
和txt
应仅包含上午8:00到10:00之间的那些时间。