我有一个看起来像
的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中针对这些特定的数据结构。
如果有人有找到这些问题的答案的任何一般提示,比如变量的类型,以及我可以对它做什么操作,那么他们也会非常感激。
答案 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}));
希望它有所帮助。