在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
運行結果