【发布时间】:2017-06-15 13:02:25
【问题描述】:
我在 Matlab 中有一个表格,其中包含来自不同测试人员的测试数据。该测试有七个视频剪辑,每个视频剪辑有四个不同的音频版本,测试人员必须在 1 到 100 的范围内对其进行评分。每个视频剪辑呈现两次以确保统计准确性。测试人员按下界面上的按钮 1-4 以听到不同的音频版本。
我的表格包含以下列(其中一些与问题无关):
Test Person ID Audio Version Video Clip Rating
1 1 Forest 40
1 2 Forest 60
1 3 Forest 20
1 4 Forest 100
现在,为了在测试期间尽量减少对特定按钮的偏爱,音频版本在每个视频剪辑之间随机排列。这意味着真实数据看起来更像这样(音频版本未排序):
Test Person ID Audio Version Video Clip Rating
1 1 Forest 40
1 2 Forest 60
1 3 Forest 20
1 4 Forest 100
1 3 City 10
1 2 City 50
1 1 City 40
1 4 City 7
1 4 Inside 90
1 2 Inside 58
1 1 Inside 22
1 3 Inside 35
我想要做的是:保持视频剪辑的正确顺序,因此仍然有 Forest -> City -> Inside,但它们都已排序,因此始终是音频版本 1、2、3 , 4:
Test Person ID Audio Version Video Clip Rating
1 1 Forest 40
1 2 Forest 60
1 3 Forest 20
1 4 Forest 100
1 1 City 40
1 2 City 50
1 3 City 10
1 4 City 7
1 1 Inside 22
1 2 Inside 58
1 3 Inside 35
1 4 Inside 90
我最初的想法是在 Matlab 中使用sortrow() 函数,然后将它们与视频剪辑一起升序排序,但是由于视频剪辑在测试的不同阶段被引入了两次,我想保持相同的顺序表中的剪辑不起作用。相同的视频片段也会呈现给许多不同的测试人员。
我正在使用一个预制函数,该函数必须以这种方式对数据进行排序才能对其执行统计计算。此函数从结构中获取 Matlab 数据,并通过 for 循环 row for row 将其放入表中。
因为数据是通过 for 循环放入表中的,所以我认为可能有一种方法可以一次只对固定数量的行进行排序,即第 1-4、5-8 行, 9-12 等等。 您知道在 Matlab 中是否可以只对表格的一部分进行排序?
【问题讨论】: