如何删除单元格数组中的重复值

时间:2016-02-09 14:31:22

标签: matlab char duplicates

我有cellchar数组:

a={'1';'1';'1';'1';'1';'3';'3';'3';'3';'3';'3';'4';'4';'4';'4'};

我希望将其转化为:

a={'1';'';'';'';'';'3';'';'';'';'';'';'4';'';'';''};

2 个答案:

答案 0 :(得分:10)

首先,找到select b_record_id from b_records order by b_record_id desc 的唯一元素及其第一个索引。然后将a的所有其他条目设置为a

''

正如CST-Link所指出的,重复索引的计算和空字符串的分配都可以加速(特别是[~, ii] = unique(a); ind = setdiff(1:numel(a), ii); [a{ind}] = deal(''); 很慢):

setdiff

答案 1 :(得分:5)

对于大型阵列来说,这可能很快:

a=repmat({'1';'1';'1';'1';'1';'3';'3';'3';'3';'3';'3';'4';'4';'4';'4'}, 100000, 1);

[u,n] = unique(flipud(a));
b = repmat({''}, size(a));
b(n) = u;
a = flipud(b);