Delete duplicate values from string array

조회 수: 51 (최근 30일)
Tatjana Mü
Tatjana Mü 2022년 5월 17일
답변: Mitch Lautigar 2022년 5월 17일
Hi,
I have a string array with different elements. They are random from sample to sample. In some rows I have duplicates from some elements. Which should be remove. But sadly I don't find a correct way.
SP_RL = ["Na","Mg","Mg","Si"; "K","Ca","Rb"; "Sr","Sr","Pt"]
In the end I want to have it like this:
SP_RL = ["Na","Mg","Si"; "K","Ca","Rb";"Sr","Pt"]
I tried it already with unique in a loop to delete the duplicates row after row:
for x=1:number_rows
SP_RL(x,:)=unique(SP_RL(x,:));
end
At the moment I am out of ideas, because I tried everything. Does somebody has experience with the same problem?
Thank you :-)
  댓글 수: 6
Tatjana Mü
Tatjana Mü 2022년 5월 17일
@Thorsten that's bad... Ok like you mentioned I could turn it into a long vector. Does this means I have every row in a long vector or the whole matrix in one?
Torsten
Torsten 2022년 5월 17일
편집: Torsten 2022년 5월 17일
You can first delete the duplicates rowwise and afterwards put the resulting (possibly shortened) rows in a long vector.
It should also be possible to turn your matrix into a cell array. Then each row can have a different number of elements, I guess. But I'm not an expert with this kind of data structure.
You can also keep the matrix structure if you replace the duplicate strings by another string, e.g. "Deleted".

댓글을 달려면 로그인하십시오.

답변 (1개)

Mitch Lautigar
Mitch Lautigar 2022년 5월 17일
You need to use strcmpi() which will compare strings ignoring case and have it index through each spot of the array to compare the strings.
Unique() is best for sorting numbers. Hope this helps!

카테고리

Help CenterFile Exchange에서 Characters and Strings에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by