0

我有两个 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 循环。

4

1 回答 1

1

我不明白你是怎么到达的D

对于C,您可以使用accumarray

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

C{1}[1 2 3]

于 2013-02-01T16:54:18.347 回答