在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
运行结果