Arrays Matlab:在数组中创建组和重复标记的映射

Arrays Matlab:在数组中创建组和重复标记的映射,arrays,matlab,grouping,duplicates,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给出

我有两个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循环来处理,我想避免。

我不明白你是如何到达
D

对于
C
,您可以使用
accumarray

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

C{1}
[1 2 3]

谢谢你的提示。D包含与特定组共享相同值的组。一个例子是,如果你考虑一个多边形,B作为顶点,那么D将是一个多边形的共享多边形的相邻多边形。