是否有一个很好的函数可以删除单元格数组中的重复条目?
一些谷歌搜索引发了“独特”功能,但似乎只有在数组的所有条目都是字符串时才有效。我的是2x2矩阵。
由于
答案 0 :(得分:1)
我使用了CELLFUN,CELL2MAT和UNIQUE的组合。我们的想法是将每个矩阵转换为一个向量,将这些单元格数组转换为矩阵并应用唯一的结果。您可以使用NUM2CELL将结果转换回单元格数组。
x = {[1 2; 3 4], [1 2; 3 4], [5 6; 7 8], [1 2; 3 4], [5 6; 7 8]}';
x1 = cellfun(@(y)y(:)', x, 'UniformOutput',0);
x2 = cell2mat(x1);
x3 = unique(x2,'rows');
x4 = num2cell(x3,2);
x5 = cellfun(@(y) reshape(y,2,2), x4, 'UniformOutput',0);
可能用较少的步骤完成。
重要的是要记住,只有当所有单元格数组元素具有相同的大小时,此代码才有效。
您可以使用
检查此情况assert(size(unique(cell2mat(cellfun(@size,x,'UniformOutput',0))),1) == 1,...
'Cell elements have different size')