How to delete the duplicate number or using unique in the cell?

1 次查看(过去 30 天)
Let's see if I have A:
A={[3];[6 8 3];[5];[10 5]}
I am trying to delete the duplicate numbers and found that 'unique' can return the array without the duplication.
Is there any way that I can use unique or delete the duplicate to my cell structure? result like this for example:
A={[3];[6 8];[5];[10]}

采纳的回答

Andrei Bobrov
Andrei Bobrov 2019-5-14
A={[3];[6 8 3];[5];[10 5]};
k = repelem((1:numel(A))',cellfun(@numel,A));
B = cell2mat(cellfun(@(x)x(:),A,'un',0));
[a,b] = unique(B,'stable');
out = accumarray(k(b),a,[],@(x){x(:)'});
  2 个评论
Hang Vu
Hang Vu 2019-5-14
It has a problem:
A={[3];[6 8];[5 10];[10]};
k = repelem((1:numel(A))',cellfun(@numel,A));
B = cell2mat(cellfun(@(x)x(:),A,'un',0));
[a,b] = unique(B,'stable');
A= accumarray(k(b),a,[],@(x){x(:)'})
A{:}
it may return 3x1 cell array in this case.
A =
3×1 cell array
{[ 3]}
{1×2 double}
{1×2 double}
ans =
3
ans =
6 8
ans =
5 10
Could you please help to return the last cell with [] , mean A still has 4x1 cell array
A={[3];[6 8];[5 10];[]}

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Data Types 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by