如何在Matlab中获得唯一的数组值?

时间:2014-09-10 08:05:39

标签: matlab cell-array

我的数组值如下所示:

a =  { [1 2 4]; [3 5 6 7]; [1 2 4]; [3 5 6 7]; [8 9]; []};

我正在尝试使用Matlab来获取像这样的数组值

a = { [1 2 4]; [3 5 6 7];[8 9]};

1 个答案:

答案 0 :(得分:0)

寻找唯一身份的基本解决方案

unique(cellfun(@(x)(mat2str(x)),a,'uniformoutput',false))

实际上可以找到here


复杂因素

从技术上讲,最后的空单元格也是唯一的,也许您想要单独删除它:

a(cellfun(@isempty,a)) = []

目前你得到字符串作为输出,这可以这样解决:

[~, idx] = unique(cellfun(@(x)(mat2str(x)),a,'uniformoutput',false))
a(idx)

我个人认为这比应该的更难。


摘要

您可以像这样获得所需的输出

a(cellfun(@isempty,a)) = []
[~, idx] = unique(cellfun(@(x)(mat2str(x)),a,'uniformoutput',false))
a(idx)