matlab中为啥用unique数组去掉重复元素后,还有相同的元素

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab中为啥用unique数组去掉重复元素后,还有相同的元素相关的知识,希望对你有一定的参考价值。

读入下面的图

I=imread('E:/ms.jpg');%读图[L W]=size(rgb2gray(I));%尺寸I0=rgb2hsv(I);%转换颜色空间A=zeros(1,1);k=1;K=L*W;A=zeros(1,K);for j=1:380for i=1:360A(1,k)=I0(j,i,1);k=k+1;endend
B=unique(A);
数组A

数组B

我抓狂了。。。

因为那些数本来就是不同的,你双击那几个相同的数字,看一下它们究竟是多少。Matlab只给你显示了这个小数的前几位罢了。
再有,你的代码效率低。

换成
I=imread('E:/ms.jpg');%读图
[I0,~,~]=rgb2hsv(I);%转换颜色空间
B = unique(I0(:));
就可以了。
参考技术A A =

1 2 3 2 1 5 1 4

>> b=unique(A)

b =

1 2 3 4 5

编写一个方法,去掉数组中重复元素

//排序后相邻去除法
  arr=[1,2,5,1,3,7,9,5];
   function unique(arr){
       arr.sort();
       var _arr=[arr[0]];//结果数组
          for(var i=0;i<arr.length;i++){
            if(arr[i]!=_arr[_arr.length-1]){
               _arr.push(arr[i]);
                }
          }
        
   return _arr;
        
   }
   unique(arr);
  
//遍历数组法
  if(Array.prototype.indexOf===-1){
      Array.prototype.indexOf=function(value,fromi){
          fromi===undefined&&(fromi=0);
             for(var i=fromi;i<this.length;i++){
             if(this[i]=value){
                  return true;
             }else{
                  return -1;
              }
        }
      }
  }
   arr=[1,2,5,1,3,7,9,5]
   function unique(arr){
       var _arr=[];//新建临时数组
       for(var i=0;i<arr.length;i++){
           if(_arr.indexOf(arr[i])==-1){//如果arr的第i已经保存进了_arr,那么跳过,
        //否则把当前项push到临时数组里面(没有在_arr中出现过(-1))
                 _arr.push(arr[i]);
           }
       }
     return _arr;
    
   }
   console.log(String(unique(arr)));

 *先解决ie8的兼容问题

以上是关于matlab中为啥用unique数组去掉重复元素后,还有相同的元素的主要内容,如果未能解决你的问题,请参考以下文章

编写一个方法,去掉数组中重复元素

$.unique() 对象组成的数组去掉重复对象

matlab问题,关于unique函数

javascript去掉数组中的重复元素

php如何去掉二维数组中重复的元素?

matlab中某些函数的用法