Find duplicated values in a row and rename
조회 수: 5 (최근 30일)
이전 댓글 표시
I have a data array (100:500), and for the first vector(1,:) I would like to find the duplicated string values(the data in each cell is an string). For the result duplicated stings found I want to concatenate '_2'...'_n' depending on the duplicates found. I have try with the unique and histc functions but since is a vector of strings I could not achieve a good result.
I would really appreciate some help,
Thanks in advance
댓글 수: 0
채택된 답변
Curtis N
2015년 1월 26일
I'm sure you no longer need this, but as I was looking for this type of solution today, here's how I did it using A K's suggestion.
orig = {'a', 'a', 'b', 'c', 'd', 'b', 'a', 'b', 'a', 'e'}';
new = orig;
uniqStr = unique(orig);
for ii = 1:length(uniqStr)
idx = strmatch(uniqStr{ii}, orig, 'exact');
for jj = 2:length(idx)
new{idx(jj)} = [orig{idx(jj)}, '_', num2str(jj)];
end
end
compare = [orig, new]
compare =
'a' 'a'
'a' 'a_2'
'b' 'b'
'c' 'c'
'd' 'd'
'b' 'b_2'
'a' 'a_3'
'b' 'b_3'
'a' 'a_4'
'e' 'e'
If somebody knows how to due this without loops, please share the solution.
댓글 수: 0
추가 답변 (1개)
A K
2013년 7월 16일
You can try using "unique" function to get a listing of all unique strings in your row vector
Next try using "strmatch" for each uniqe string found to see if they are repeated. You can try
index = strmatch('unique_string', array_of_strings, 'exact'), where index will point to the locations in array_of_strings where unique_string occurs.
참고 항목
카테고리
Help Center 및 File Exchange에서 Characters and Strings에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!