【问题标题】:Matlab: Creating maps of groups and indicies of duplicates in an arrayMatlab:在数组中创建组的映射和重复项的索引
【发布时间】:2013-02-02 00:54:18
【问题描述】:

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

【问题讨论】:

    标签: arrays matlab grouping duplicates


    【解决方案1】:

    我不明白你是怎么找到D的。

    对于C,可以使用accumarray

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

    C{1}[1 2 3]

    【讨论】:

    • 感谢您的提示。 D 包含与特定组共享相同值的组。例如,如果您将 A 视为多边形,将 B 视为顶点,则 D 将是与特定多边形共享顶点的相邻多边形。
    猜你喜欢
    • 2012-03-06
    • 1970-01-01
    • 1970-01-01
    • 2011-08-07
    • 2021-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多