Matlab中保持原來數值順序的unique函數實現

      在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

      運行結果


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章