有没有一种简单的(最好不使用多个for循环)方法来在Matlab中根据一组类别对值向量进行分组?
我有一个数据矩阵,格式如下
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维数组
等等,什么是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维透视表,而不是计算平均值。
我在帮助文档中找到了这个函数。
A = accumarray(subs,val,[],@(x) {x})
但是我无法理解如何使它做我想要的事情!
unique
函数的第三个输出。而且ind
变量告诉每个元素“该去哪里”,这真是太美妙了。 - Sanjay Manohar