cat*_*cat 2 matlab char duplicates
我有这个cell数组char:
a={'1';'1';'1';'1';'1';'3';'3';'3';'3';'3';'3';'4';'4';'4';'4'};
Run Code Online (Sandbox Code Playgroud)
我想把它变成这个:
a={'1';'';'';'';'';'3';'';'';'';'';'';'4';'';'';''};
Run Code Online (Sandbox Code Playgroud)
zee*_*eez 10
首先,找到a它们的第一个索引的独特元素.然后设置的所有其他条目a来''.
[~, ii] = unique(a);
ind = setdiff(1:numel(a), ii);
[a{ind}] = deal('');
Run Code Online (Sandbox Code Playgroud)
正如CST-Link所指出的,重复索引的计算和空字符串的分配都可以加速(特别setdiff是很慢):
[~, ii] = unique(a);
ind = 1:numel(a);
ind(ii) = [];
a(ind) = {''};
Run Code Online (Sandbox Code Playgroud)
小智 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);
Run Code Online (Sandbox Code Playgroud)