如何在matlab中连接和统一列表

时间:2013-05-20 10:07:28

标签: matlab data-structures

我有一个看起来像

的matlab结构
pointlesshorror

ans = 
{
  [1,1] =

      1   17   20

  [2,1] =

      2   17   18   21
...
  [16,1] =

     16   39   40

}

和另一个

misery = [1 2 3]

我希望获得与每个V

相关联的列表
pointlesshorror(1) # 1 17 20
pointlesshorror(2) # 2 17 18 21
pointlesshorror(3) # 3 18 19 23

并将它们组合在一起

[ 1 17 20 2 17 18 21 3 18 19 23 ]

然后统一他们

unique([ 1 17 20 2 17 18 21 3 18 19 23 ])

到最后

[  1    2    3   17   18   19   20   21   23 ]

不幸的是,这必须是快速的,并且使matlab快速的唯一方法是将所有内容表达为单行,所以我想知道如何说:

(distinct (concat (map pointlesshorror misery)))

在matlab中针对这些特定的数据结构。

如果有人有找到这些问题的答案的任何一般提示,比如变量的类型,以及我可以对它做什么操作,那么他们也会非常感激。

2 个答案:

答案 0 :(得分:4)

除了同时连接pointlesshorror的多个条目之外,您似乎几乎已经弄明白了。幸运的是,这很简单:如果使用向量索引单元格数组,则得到comma-separated list,其连接方式如下:

pointlessHorrorConcat = [ pointlessHorror{[ 1 2 3 ]} ];

所以这是一个完整的例子:

pointlesshorror = { [ 1 17 20 ], [ 2 17 18 21 ], [ 16 39 60 ] }
misery = [ 1 2 3 ]
result = unique([ pointlesshorror{misery} ])

答案 1 :(得分:3)

您暴露问题的方式让我认为pointlesshorror单元格而不是结构,我是对的吗?

如果是这样的话:

pointlesshorror{1,1} = [1, 17, 20];
pointlesshorror{2,1} = [2, 17, 18, 21];
pointlesshorror{3,1} = [3, 18, 19, 23];

misery = [1, 2, 3];

只是做:

unique(horzcat(pointlesshorror{misery}));

希望它有所帮助。