0

在我的 excel 文件中,我有一个 12 小时时钟时间的时间列和一堆数据列。因为我无法附加文件,所以我在这篇文章中粘贴了一段代码作为代码。我正在尝试构建一个 gui,它将像这样从用户那里获取输入:

开始时间:上午 7 点 29 分 32 秒

结束时间:上午 7 点 29 分 51 秒

然后执行以下操作:

计算以秒为单位的时间(应该只是行数,每秒收集一次数据)

将时间范围内的数据从“数据 3”列复制到变量中 根据需要对复制的数据执行其他计算

我在弄清楚如何搜索时间数据并找到它的位置时遇到了一些麻烦,因为它使用 xlsread 作为文本导入。有任何想法吗?

数据如下所示:

Time        Data 1      Data 2      Data 3      Data 4      Data 5
7:29:25 AM  0.878556385 0.388400561 0.076890401 0.93335277  0.884750618
7:29:26 AM  0.695838393 0.712762566 0.014814069 0.81264949  0.450303694
7:29:27 AM  0.250846937 0.508617941 0.24802015  0.722457624 0.47119616
7:29:28 AM  0.206189924 0.82970364  0.819163787 0.060932817 0.73455323
7:29:29 AM  0.161844331 0.768214077 0.154097877 0.988201094 0.951520263
7:29:30 AM  0.704242494 0.371877481 0.944482485 0.79207359  0.57390951
7:29:31 AM  0.072028024 0.120263127 0.577396985 0.694153791 0.341824004
7:29:32 AM  0.241817775 0.32573323  0.484644494 0.377938298 0.090122672
7:29:33 AM  0.500962945 0.540808907 0.582958676 0.043377373 0.041274613
7:29:34 AM  0.087742217 0.596508236 0.020250297 0.926901109 0.45960323
7:29:35 AM  0.268222071 0.291034947 0.598887588 0.575571111 0.136424853
7:29:36 AM  0.42880255  0.349597405 0.936733938 0.232128788 0.555528823
7:29:37 AM  0.380425154 0.162002488 0.208550466 0.776866494 0.79340504
7:29:38 AM  0.727940393 0.622546124 0.716007768 0.660480612 0.02463804
7:29:39 AM  0.582772435 0.713406643 0.306544291 0.225257421 0.043552277
7:29:40 AM  0.371156954 0.163821476 0.780515577 0.032460418 0.356949005
7:29:42 AM  0.484167263 0.377878242 0.044189636 0.718147456 0.603177625
7:29:43 AM  0.294017186 0.463360581 0.962296024 0.504029061 0.183131098
7:29:44 AM  0.95635086  0.367849494 0.362230918 0.984421096 0.41587606
7:29:45 AM  0.198645523 0.754955312 0.280338922 0.79706146  0.730373691
7:29:46 AM  0.058483961 0.46774544  0.86783339  0.147418954 0.941713252
7:29:47 AM  0.411193343 0.340857813 0.162066261 0.943124515 0.722124394
7:29:48 AM  0.389312994 0.129281042 0.732723258 0.803458815 0.045824426
7:29:49 AM  0.549633038 0.73956852  0.542532728 0.618321989 0.358525184
7:29:50 AM  0.269925317 0.501399748 0.938234302 0.997577871 0.318813506
7:29:51 AM  0.798825842 0.24038537  0.958224157 0.660124357 0.07469288
7:29:52 AM  0.963581196 0.390150081 0.077448543 0.294604314 0.903519943
7:29:53 AM  0.890540963 0.50284339  0.229976565 0.664538451 0.926438543
7:29:54 AM  0.46951573  0.192568637 0.506730373 0.060557482 0.922857391
7:29:55 AM  0.56552394  0.952136998 0.739438663 0.107518765 0.911045415
7:29:56 AM  0.433149875 0.957190309 0.475811126 0.855705733 0.942255155

这是我正在使用的代码:

[Data,Text] = xlsread('C:\Users\data.xlsx',2); 
IndexStart=strmatch('7:29:29 AM',Text,'exact');   %start time 
IndexEnd=strmatch('2:30:29 PM',Text,'exact');     %end time 
seconds = IndexEnd-IndexStart; 
TestData = Data([IndexStart: IndexEnd],:);
4

2 回答 2

0

您可能需要:

  • 用于strfind在导入的数据中查找相关字符串
  • 用于datenum将日期转换为序列日期数字,以便能够计算两点之间的经过时间。

如果您到目前为止发布代码会有所帮助。

根据评论编辑:

这是我在开始和结束时间列表中循环的方法:

[Data,Text] = xlsread('C:\Users\data.xlsx',2); 
start_times = {'7:29:29 AM','7:29:35 AM','7:29:44 AM','7:29:49 AM'}; % etc...
end_times = {'2:30:29 PM','2:30:59 PM','2:31:22 PM','2:32:49 PM'}; % etc...
elapsed_time = zeros(length(start_times),1);
TestData = cell(length(start_times),1); % need a cell array because data can/will be of unequal lengths
for k=1:length(start_times)
    IndexStart=strmatch(start_times{k},Text,'exact');   %start time 
    IndexEnd=strmatch(end_times{k},Text,'exact');     %end time 
    elapsed_time(k) = IndexEnd-IndexStart; 
    TestData{k} = Data([IndexStart: IndexEnd],:);
end
于 2014-11-26T14:16:41.750 回答
0

使用主菜单中变量标签中的“导入数据”。在那里你可以设置你希望如何导入数据。有无标题和格式。

于 2014-11-26T14:59:43.740 回答