在matlab中使用unique函数获取某向量中不重复数值的集合时,默认会对这个集合中的元素排序。在某些应用场合当中,这种排序会带来某种不方便,这里实现了一个保持原来数值顺序的unique函数。
程序代码
function uniVecUnsorted = unique_unsorted( vector )
uniValues = unique( vector );
mask = zeros( size( vector, 1 ), size( vector, 2 ) );
for i = 1 : length(uniValues);
maskValue = ( vector == uniValues(i) );
indFirst = find( vector == uniValues(i), 1, 'first' );
maskValue( indFirst + 1 : end ) = 0;
mask = mask | maskValue;
end
uniVecUnsorted = vector( mask );
end
运行结果