我有两个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循环,我想避免。
答案 0 :(得分:1)
我不明白你是如何到达D
的。
对于C
,您可以使用accumarray
:
C = accumarray(A,B,[],@(x){x})
C{1}
是[1 2 3]