我有以下格式的21128x9矩阵:
x = ['Participant No.' 'yyyy' 'mm' 'dd' 'HH' 'MM' 'SS' 'question No.' 'response']
e.g。
x =
Columns 1 through 5
18 2011 10 26 15
18 2011 10 26 15
18 2011 10 26 15
18 2011 10 26 15
18 2011 10 26 15
19 2011 10 31 13
19 2011 10 31 13
19 2011 10 31 13
19 2011 10 31 13
19 2011 10 31 13
Columns 6 through 9
42 33 27 4
42 39 17 2
42 45 52 2
42 47 45 3
42 50 12 3
6 5 36 1
6 20 27 4
6 22 34 5
6 33 43 3
6 42 42 1
其中列2-7是日期向量。 数据按日期/时间排序。
我想计算每个参与者回答每个问题所花费的时间 - 即第1行和第2行,第3行,第3行和第4行,第4行和第5行以及第6行和第7行之间经过的时间, 7和8等 - 最后得到一个矩阵,按参与者编号排序,然后我可以计算每个问题的平均时间。
我已尝试使用 etime 功能,但无济于事。
编辑:关于 etime ,只是为了看看它是否会在实践中发挥作用,我试着写道:
etime(x(2,5:7),x(1,5:7))
比较第1行和第2行的第5-7列,但我一直回来:
??? Index exceeds matrix dimensions.
Error in ==> etime at 41
t = 86400*(datenummx(t1(:,1:3)) - datenummx(t0(:,1:3))) + ...
答案 0 :(得分:2)
你快到了!您需要将5s更改为2s,这就是全部:
etime(x(2,2:7),x(1,2:7))
现在让它们全部让我们制作两个日期向量的矩阵,但是一行彼此不同步:
fisrt设置x:
x =[ 18 2011 10 26 15 42 33 27 4
18 2011 10 26 15 42 39 17 2
18 2011 10 26 15 42 45 52 2
18 2011 10 26 15 42 47 45 3
18 2011 10 26 15 42 50 12 3
19 2011 10 31 13 6 5 36 1
19 2011 10 31 13 6 20 27 4
19 2011 10 31 13 6 22 34 5
19 2011 10 31 13 6 33 43 3
19 2011 10 31 13 6 42 42 1]
现在提取时间:
Tn = x(1:end-1, 2:7);
Tnplus1 = x(2:end, 2:7);
并且不能获得连续行之间的差异向量:
etime(Tnplus1, Tn)
结果是:
ans =
6
6
2
3
422595
15
2
11
9
此外,如果您不关心年月日数据,只需将它们设置为零,即
Tn(:, 1:3) = 0;
Tnplus1(:, 1:3) = 0;
etime(Tnplus1, Tn)
ans =
6
6
2
3
-9405
15
2
11
9
答案 1 :(得分:1)
以下是一些简单的步骤:
小规模示例:
% Hours Mins Secs:
difference = ([23 12 4] - [23 11 59]);
secvec = difference .* [3600 60 1];
secdiff = sum(secvec)