单元格值之间的matlab时间排名
Time ranking in matlab between cell values
我的 matlab 数据有一个日期变量,我用这个 JavaScript 代码收集了它
var timeStampOfOnLoad = new Date();
Qualtrics.SurveyEngine.setEmbeddedData('timeStampOfOnLoad_FirstCondition', timeStampOfOnLoad);
数据是这样存储在元胞数组中的; '2018-01-15T17:56:15.062Z'
我为每个主题设置了 4 个不同的条件,并且它们的顺序是随机的。我需要检查首先出现的条件及其后续条件。更清楚地说,我将条件顺序随机化,因此每个参与者都有不同的顺序。我想检查每个参与者的顺序,但我不能使用 rank(A.order(:,:))
代码,它给我这个错误。
**Error in rank (line 14)**
** s = svd(A); **
我还尝试更改元胞数组并删除日期部分,只是使用 strcmp
代码,但我仍然无法使用排名代码。
这是我的部分数据;
Condition 1 Condition 2 Condition 3 Condition 4
'2018-01-15T17:056:15.062Z' '2018-01-15T17:46:53.107Z' '2018-01-15T17:49:57.179Z' '2018-01-15T17:53:09.910Z'
'2018-01-15T17:45:20.595Z' '2018-01-15T17:48:50.694Z' '2018-01-15T17:56:24.163Z' '2018-01-15T17:52:32.071Z'
'2018-01-15T17:47:21.390Z' '2018-01-15T17:54:37.342Z' '2018-01-15T17:51:08.210Z' '2018-01-15T17:58:20.400Z'
'2018-01-15T17:51:38.891Z' '2018-01-15T17:48:00.568Z' '2018-01-15T17:58:51.714Z' '2018-01-15T17:55:04.673Z'
'2018-01-15T17:56:07.202Z' '2018-01-15T17:48:35.489Z' '2018-01-15T17:59:49.928Z' '2018-01-15T17:52:38.115Z'
'2018-01-15T17:59:56.728Z' '2018-01-15T17:48:28.216Z' '2018-01-15T17:52:38.396Z' '2018-01-15T17:56:19.590Z'
'2018-01-15T17:59:26.550Z' '2018-01-15T17:48:04.734Z' '2018-01-15T17:52:21.717Z' '2018-01-15T17:55:58.949Z'
'2018-01-15T18:01:56.650Z' '2018-01-15T17:54:39.215Z' '2018-01-15T17:58:13.512Z' '2018-01-15T17:50:48.889Z'
'2018-01-15T17:45:58.618Z' '2018-01-15T17:50:31.997Z' '2018-01-15T18:01:34.283Z' '2018-01-15T17:54:56.145Z'
'2018-01-15T17:57:46.650Z' '2018-01-15T17:53:35.369Z' '2018-01-15T17:49:36.977Z' '2018-01-15T18:01:44.739Z'
'2018-01-15T17:51:17.046Z' '2018-01-15T17:55:09.768Z' '2018-01-15T17:58:41.800Z' '2018-01-15T18:02:24.046Z'
'2018-01-15T18:03:24.520Z' '2018-01-15T17:59:51.090Z' '2018-01-15T17:52:12.879Z' '2018-01-15T17:56:04.750Z'
'2018-01-15T18:00:18.382Z' '2018-01-15T17:53:01.234Z' '2018-01-15T17:56:40.531Z' '2018-01-15T18:03:54.553Z'
'2018-01-15T17:59:02.788Z' '2018-01-15T17:55:28.473Z' '2018-01-15T17:51:07.399Z' '2018-01-15T18:02:43.863Z'
'2018-01-15T18:18:18.354Z' '2018-01-15T18:06:34.464Z' '2018-01-15T18:10:32.887Z' '2018-01-15T18:14:29.511Z'
每一行都提供参与者 x 参加该条件的日期和时间的信息。
行 = 参与者
Columns=条件出现日期和时间
每一列代表一个条件(1 到 4),我还有 149 行。我如何对它们进行排名 - 根据它们的日期和时间信息对它们进行排序 - 它们?如何查看哪个参与者在哪种条件下开始了我的实验?
例如,第一个参与者开始了我的实验 条件 2 (2018-01-15T17:46:53.107Z) 然后 条件 3 (2018- 01-15T17:49:57.179Z),然后是条件4(2018-01-15T17:53:09.910Z),最后一个是条件1 (2018-01-15T17:056:15.062Z).
因此第一个参与者有一个 2-3-4-1 序列。
您只需将日期字符串转换为日期序列号,然后对结果进行逐行排序,如下:
C = {
'2018-01-15T17:56:15.062Z' '2018-01-15T17:46:53.107Z' '2018-01-15T17:49:57.179Z' '2018-01-15T17:53:09.910Z';
'2018-01-15T17:45:20.595Z' '2018-01-15T17:48:50.694Z' '2018-01-15T17:56:24.163Z' '2018-01-15T17:52:32.071Z';
'2018-01-15T17:47:21.390Z' '2018-01-15T17:54:37.342Z' '2018-01-15T17:51:08.210Z' '2018-01-15T17:58:20.400Z';
'2018-01-15T17:51:38.891Z' '2018-01-15T17:48:00.568Z' '2018-01-15T17:58:51.714Z' '2018-01-15T17:55:04.673Z';
'2018-01-15T17:56:07.202Z' '2018-01-15T17:48:35.489Z' '2018-01-15T17:59:49.928Z' '2018-01-15T17:52:38.115Z';
'2018-01-15T17:59:56.728Z' '2018-01-15T17:48:28.216Z' '2018-01-15T17:52:38.396Z' '2018-01-15T17:56:19.590Z';
'2018-01-15T17:59:26.550Z' '2018-01-15T17:48:04.734Z' '2018-01-15T17:52:21.717Z' '2018-01-15T17:55:58.949Z';
'2018-01-15T18:01:56.650Z' '2018-01-15T17:54:39.215Z' '2018-01-15T17:58:13.512Z' '2018-01-15T17:50:48.889Z';
'2018-01-15T17:45:58.618Z' '2018-01-15T17:50:31.997Z' '2018-01-15T18:01:34.283Z' '2018-01-15T17:54:56.145Z';
'2018-01-15T17:57:46.650Z' '2018-01-15T17:53:35.369Z' '2018-01-15T17:49:36.977Z' '2018-01-15T18:01:44.739Z';
'2018-01-15T17:51:17.046Z' '2018-01-15T17:55:09.768Z' '2018-01-15T17:58:41.800Z' '2018-01-15T18:02:24.046Z';
'2018-01-15T18:03:24.520Z' '2018-01-15T17:59:51.090Z' '2018-01-15T17:52:12.879Z' '2018-01-15T17:56:04.750Z';
'2018-01-15T18:00:18.382Z' '2018-01-15T17:53:01.234Z' '2018-01-15T17:56:40.531Z' '2018-01-15T18:03:54.553Z';
'2018-01-15T17:59:02.788Z' '2018-01-15T17:55:28.473Z' '2018-01-15T17:51:07.399Z' '2018-01-15T18:02:43.863Z';
'2018-01-15T18:18:18.354Z' '2018-01-15T18:06:34.464Z' '2018-01-15T18:10:32.887Z' '2018-01-15T18:14:29.511Z'
};
D = cellfun(@(x)datenum(x,'yyyy-mm-ddTHH:MM:SS.FFFZ'),C);
[~,order] = sort(D,2);
order
变量将包含您要查找的内容。
附带说明一下,我建议您对输入日期进行清理,因为偏移量 {1,1}
:
处的值
2018-01-15T17:056:15.062Z
^
包含分钟的补充和意外值。您指定的 datenum
格式一点也不灵活,这会把一切都搞砸。
我的 matlab 数据有一个日期变量,我用这个 JavaScript 代码收集了它
var timeStampOfOnLoad = new Date();
Qualtrics.SurveyEngine.setEmbeddedData('timeStampOfOnLoad_FirstCondition', timeStampOfOnLoad);
数据是这样存储在元胞数组中的; '2018-01-15T17:56:15.062Z'
我为每个主题设置了 4 个不同的条件,并且它们的顺序是随机的。我需要检查首先出现的条件及其后续条件。更清楚地说,我将条件顺序随机化,因此每个参与者都有不同的顺序。我想检查每个参与者的顺序,但我不能使用 rank(A.order(:,:))
代码,它给我这个错误。
**Error in rank (line 14)**
** s = svd(A); **
我还尝试更改元胞数组并删除日期部分,只是使用 strcmp
代码,但我仍然无法使用排名代码。
这是我的部分数据;
Condition 1 Condition 2 Condition 3 Condition 4
'2018-01-15T17:056:15.062Z' '2018-01-15T17:46:53.107Z' '2018-01-15T17:49:57.179Z' '2018-01-15T17:53:09.910Z'
'2018-01-15T17:45:20.595Z' '2018-01-15T17:48:50.694Z' '2018-01-15T17:56:24.163Z' '2018-01-15T17:52:32.071Z'
'2018-01-15T17:47:21.390Z' '2018-01-15T17:54:37.342Z' '2018-01-15T17:51:08.210Z' '2018-01-15T17:58:20.400Z'
'2018-01-15T17:51:38.891Z' '2018-01-15T17:48:00.568Z' '2018-01-15T17:58:51.714Z' '2018-01-15T17:55:04.673Z'
'2018-01-15T17:56:07.202Z' '2018-01-15T17:48:35.489Z' '2018-01-15T17:59:49.928Z' '2018-01-15T17:52:38.115Z'
'2018-01-15T17:59:56.728Z' '2018-01-15T17:48:28.216Z' '2018-01-15T17:52:38.396Z' '2018-01-15T17:56:19.590Z'
'2018-01-15T17:59:26.550Z' '2018-01-15T17:48:04.734Z' '2018-01-15T17:52:21.717Z' '2018-01-15T17:55:58.949Z'
'2018-01-15T18:01:56.650Z' '2018-01-15T17:54:39.215Z' '2018-01-15T17:58:13.512Z' '2018-01-15T17:50:48.889Z'
'2018-01-15T17:45:58.618Z' '2018-01-15T17:50:31.997Z' '2018-01-15T18:01:34.283Z' '2018-01-15T17:54:56.145Z'
'2018-01-15T17:57:46.650Z' '2018-01-15T17:53:35.369Z' '2018-01-15T17:49:36.977Z' '2018-01-15T18:01:44.739Z'
'2018-01-15T17:51:17.046Z' '2018-01-15T17:55:09.768Z' '2018-01-15T17:58:41.800Z' '2018-01-15T18:02:24.046Z'
'2018-01-15T18:03:24.520Z' '2018-01-15T17:59:51.090Z' '2018-01-15T17:52:12.879Z' '2018-01-15T17:56:04.750Z'
'2018-01-15T18:00:18.382Z' '2018-01-15T17:53:01.234Z' '2018-01-15T17:56:40.531Z' '2018-01-15T18:03:54.553Z'
'2018-01-15T17:59:02.788Z' '2018-01-15T17:55:28.473Z' '2018-01-15T17:51:07.399Z' '2018-01-15T18:02:43.863Z'
'2018-01-15T18:18:18.354Z' '2018-01-15T18:06:34.464Z' '2018-01-15T18:10:32.887Z' '2018-01-15T18:14:29.511Z'
每一行都提供参与者 x 参加该条件的日期和时间的信息。
行 = 参与者 Columns=条件出现日期和时间
每一列代表一个条件(1 到 4),我还有 149 行。我如何对它们进行排名 - 根据它们的日期和时间信息对它们进行排序 - 它们?如何查看哪个参与者在哪种条件下开始了我的实验?
例如,第一个参与者开始了我的实验 条件 2 (2018-01-15T17:46:53.107Z) 然后 条件 3 (2018- 01-15T17:49:57.179Z),然后是条件4(2018-01-15T17:53:09.910Z),最后一个是条件1 (2018-01-15T17:056:15.062Z).
因此第一个参与者有一个 2-3-4-1 序列。
您只需将日期字符串转换为日期序列号,然后对结果进行逐行排序,如下:
C = {
'2018-01-15T17:56:15.062Z' '2018-01-15T17:46:53.107Z' '2018-01-15T17:49:57.179Z' '2018-01-15T17:53:09.910Z';
'2018-01-15T17:45:20.595Z' '2018-01-15T17:48:50.694Z' '2018-01-15T17:56:24.163Z' '2018-01-15T17:52:32.071Z';
'2018-01-15T17:47:21.390Z' '2018-01-15T17:54:37.342Z' '2018-01-15T17:51:08.210Z' '2018-01-15T17:58:20.400Z';
'2018-01-15T17:51:38.891Z' '2018-01-15T17:48:00.568Z' '2018-01-15T17:58:51.714Z' '2018-01-15T17:55:04.673Z';
'2018-01-15T17:56:07.202Z' '2018-01-15T17:48:35.489Z' '2018-01-15T17:59:49.928Z' '2018-01-15T17:52:38.115Z';
'2018-01-15T17:59:56.728Z' '2018-01-15T17:48:28.216Z' '2018-01-15T17:52:38.396Z' '2018-01-15T17:56:19.590Z';
'2018-01-15T17:59:26.550Z' '2018-01-15T17:48:04.734Z' '2018-01-15T17:52:21.717Z' '2018-01-15T17:55:58.949Z';
'2018-01-15T18:01:56.650Z' '2018-01-15T17:54:39.215Z' '2018-01-15T17:58:13.512Z' '2018-01-15T17:50:48.889Z';
'2018-01-15T17:45:58.618Z' '2018-01-15T17:50:31.997Z' '2018-01-15T18:01:34.283Z' '2018-01-15T17:54:56.145Z';
'2018-01-15T17:57:46.650Z' '2018-01-15T17:53:35.369Z' '2018-01-15T17:49:36.977Z' '2018-01-15T18:01:44.739Z';
'2018-01-15T17:51:17.046Z' '2018-01-15T17:55:09.768Z' '2018-01-15T17:58:41.800Z' '2018-01-15T18:02:24.046Z';
'2018-01-15T18:03:24.520Z' '2018-01-15T17:59:51.090Z' '2018-01-15T17:52:12.879Z' '2018-01-15T17:56:04.750Z';
'2018-01-15T18:00:18.382Z' '2018-01-15T17:53:01.234Z' '2018-01-15T17:56:40.531Z' '2018-01-15T18:03:54.553Z';
'2018-01-15T17:59:02.788Z' '2018-01-15T17:55:28.473Z' '2018-01-15T17:51:07.399Z' '2018-01-15T18:02:43.863Z';
'2018-01-15T18:18:18.354Z' '2018-01-15T18:06:34.464Z' '2018-01-15T18:10:32.887Z' '2018-01-15T18:14:29.511Z'
};
D = cellfun(@(x)datenum(x,'yyyy-mm-ddTHH:MM:SS.FFFZ'),C);
[~,order] = sort(D,2);
order
变量将包含您要查找的内容。
附带说明一下,我建议您对输入日期进行清理,因为偏移量 {1,1}
:
2018-01-15T17:056:15.062Z
^
包含分钟的补充和意外值。您指定的 datenum
格式一点也不灵活,这会把一切都搞砸。