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
我抓狂了。。。
再有,你的代码效率低。
换成
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数组去掉重复元素后,还有相同的元素的主要内容,如果未能解决你的问题,请参考以下文章