MATLAB Answers

Hang Vu
0

How to remove the duplicate in the cell array but still keep the array structure?

Hang Vu
さんによって質問されました 2019 年 5 月 14 日
最新アクティビティ Hang Vu
さんによって コメントされました 2019 年 5 月 16 日
A={[3 11];[6 5 8];[ 11 5];[5]};
I wonder if there is any way to remove the duplicate numbers in A but still keep the dimension of the cell array? like
A={[3 11];[6 5 8];[];[]};
appreciate your time!

  3 件のコメント

Kevin Phung
2019 年 5 月 14 日
how did
A={[3 11];[6 5 8];[ 11 5];[5]};
become
A={[3 11];[6 5 8];[];[]};
Hang Vu
2019 年 5 月 15 日
Yes, that is my question! i want to keep the structure
Jan
2019 年 5 月 15 日
@Hang Vu: You forgot to explain, which operation you want to apply. Why does "remove the duplicate in the cell array" produce the output for the shown input? Let me guess:
If a number occurs in an element of the cell, remove it from all subsequent elements.

サインイン to comment.

1 件の回答

回答者: Jan
2019 年 5 月 15 日
編集済み: Jan
2019 年 5 月 15 日
 採用された回答

A = {[3 11];[6 5 8];[ 11 5];[5]};
for iA = 1:numel(A)
a = A{iA};
for jA = iA + 1:numel(A)
A{jA} = A{jA}(~ismember(A{jA}, a));
end
end
Or:
list = A{1};
for iA = 2:numel(A)
A{iA} = A{iA}(~ismember(A{iA}, list));
list = union(list, A{iA})
end

  1 件のコメント

Hang Vu
2019 年 5 月 16 日
Thank you Jan!

サインイン to comment.



Translated by