我在Matlab中有一個表格,其中包含來自不同測試人員的測試數據。該測試有七個視頻剪輯,每個視頻剪輯都有四種不同的音頻版本,測試人員必須按照1到100的等級進行評分。爲了統計準確性,每個視頻剪輯都會出現兩次。測試人員按下接口上的按鈕1-4以聽到不同的音頻版本。如何在Matlab中對錶格的部分進行排序?
我的表包含以下幾列(其中包括一些其他不相關的問題):
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
我想要做的是:保持視頻剪輯的正確順序,因此仍然有森林 - >市 - >裏面,但有他們的所有排序,以便始終音頻版本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
我最初的想法是使用sortrow()
功能在Matlab中,然後與沿遞增對它們進行排序視頻剪輯,但由於視頻剪輯在測試的不同階段被引入兩次,我想維護表格中剪輯的相同順序不起作用。同樣的視頻剪輯也會呈現給衆多不同的測試人員。
我正在使用預製功能,必須以這種方式對數據進行排序才能對其執行統計計算。該函數從結構中獲取Matlab數據,並通過for循環行將其放入表中。
因爲數據是通過一個for循環我認爲有可能在同一時間內一個辦法只能固定數量的行排序放入表即行1-4,5-8,9-12等等。 你知道是否有一種方法只能在Matlab中對一部分表格進行排序?
謝謝您的回答。我從idx得到預期的輸出,即根據我的表中的順序包含從1-4的索引的很多4行列。儘管'idxtble'雖然我不完全理解第二行。 當我嘗試運行該行時,它表示「兩個輸入數組的非單獨維度必須相互匹配」。我刪除了四個增量,從而將該行更改爲'idxtble = bsxfun(@ plus,idx,0:4:size(idx,2)-1);'(我認爲是您的原始答案),但是當我我最終以table2爲單個數值。 – matiastofteby
@matiastofteby對不起,延遲迴復。你是對的。已更新。 – rahnema1
非常感謝!更新後的版本正如我所希望的那樣工作。我現在已經接受了你的回答。祝你有美好的一天。 – matiastofteby