Matlab:在数组中创建组的副本和重复索引

时间:2013-02-01 16:39:20

标签: arrays matlab grouping duplicates

我有两个Matlab数组A(包含数字组)和B(包含属于A组中的值),数组A中有重复数据

A = [1 1 1 2 2 3 4 4 4 4 4] 
B = [1 2 3 3 5 4 4 1 6 7 8]

现在我想获得以下两张地图:

 C = ['1': {1,2,3}, '2': {3,5}, '3':{4}, '4':{1,6,7,8}]  

其中C给出一个地图,其中包含该组编号作为该特定组中的索引和相关值。

D = ['1':{2,4},'2':{1},'3':{4},'4':{1}]

其中D给出一个地图,其中A组的编号为索引。这些值是A中的组编号,对于该特定子组,B中有重复值。

处理此问题的最有效方法是什么?地图是一种很好的数据结构来存储这种数据。我知道第一个可以处理一个for循环,我想避免。

1 个答案:

答案 0 :(得分:1)

我不明白你是如何到达D的。

对于C,您可以使用accumarray

C = accumarray(A,B,[],@(x){x})

C{1}[1 2 3]