有沒有一種簡單的(理想情況下沒有多個for循環)的方式來根據Matlab中的一組類別對值向量進行分組?Matlab將柱狀數據轉換爲ndarray
我有數據矩陣形式
CATEG_A CATEG_B CATEG_C ... VALUE
1 1 1 ... 0.64
1 2 1 ... 0.86
1 1 1 ... 0.74
1 1 2 ... 0.56
...
等
和我想是一個N維陣列
all_VALUE(CATEG_A, CATEG_B, CATEG_C, ..., index) = VALUE_i
當然可以有任何數量的值使用相同的類別組合,因此size(end)
將是最大類別中的值的數量 - 其餘項目將填充nan
。
備選地我很高興與
all_VALUE { CATEG_A, CATEG_B, CATEG_C, ... } (index)
即矢量的一個單元陣列。我想這有點像創建一個數據透視表,但有n維,而不是計算mean
。
我發現這個功能在幫助
A = accumarray(subs,val,[],@(x) {x})
,但我無法捉摸如何使它做我想要的東西!
不錯,我起初試過這個,但是被每個標籤部分的累計計數卡住了。 @SanjayManohar這可能是更好的解決方案... – Dan 2015-02-11 15:54:38
@丹謝謝。您的解決方案實際上在內存方面效率更高,因爲它提供了單元陣列而不是N-D陣列 – 2015-02-11 15:58:58
Perfect。還要感謝我介紹「unique」的第三個輸出。 'ind'最終告訴每個項目「去哪裏」,這真是可愛。 – 2015-02-11 16:01:25