1

我有一个看起来像的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 中用于这些特定的数据结构。

如果有人对找出这类问题的答案有任何一般提示,比如变量的类型是什么,我可以对其进行哪些操作,那么他们也将不胜感激。

4

2 回答 2

4

除了一次连接多个条目之外,您似乎已经弄清楚了几乎所有事情pointlesshorror。幸运的是,这很简单:如果你用一个向量索引一个元胞数组,你会得到一个逗号分隔的 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} ])
于 2013-05-20T10:19:09.757 回答
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}));

希望能帮助到你。

于 2013-05-20T10:18:14.633 回答