更新时间:2022-10-27 21:52:21
这里有一个解决方案,使用一些额外的输入和输出参数 UNIQUE 有:
>> y = {'d''f''a''g''g''a''w''h'}; %#样本数据
>> [〜,index] = unique(y,'first'); %#捕获索引,忽略实际值
>> y(sort(index))%#索引y与排序索引
ans =
'd''f''a''g''w''h '
I have this cell array in MATLAB:
y = { 'd' 'f' 'a' 'g' 'g' 'a' 'w' 'h'}
I use unique(y)
to get rid of the duplicates but it rearranges the strings in alphabetical order:
>> unique(y)
ans =
'a' 'd' 'f' 'g' 'h' 'w'
I want to remove the duplicates but keep the same order. I know I could write a function do do this but was wondering if there was a simpler way using unique
to remove duplicates while keeping the same order just with the duplicates removed.
I want it to return this:
>> unique(y)
ans =
'd' 'f' 'a' 'g' 'w' 'h'
Here's one solution that uses some additional input and output arguments that UNIQUE has:
>> y = { 'd' 'f' 'a' 'g' 'g' 'a' 'w' 'h'}; %# Sample data
>> [~,index] = unique(y,'first'); %# Capture the index, ignore the actual values
>> y(sort(index)) %# Index y with the sorted index
ans =
'd' 'f' 'a' 'g' 'w' 'h'