如何知道Scilab中的一个数组中是否有不同的元素?

如何知道Scilab中的一个数组中是否有不同的元素?,scilab,Scilab,我的目标是检查一个数组中是否存在放错位置的对象。 例如,数组是 2. 2. 2. 2. 2. 1. 3. 1. 3. 3. 3. 1. 3. 1. 1. 1. 1. 我想知道前5个元素,6-13和14-17是否相同 这样做的目的是识别集群解决方案中放置错误的元素 我已经尝试了前5个元素 ISet=5 IVer=7 IVir=5 for i=1:ISet if(

我的目标是检查一个数组中是否存在放错位置的对象。 例如,数组是

   2.
   2.
   2.
   2.
   2.
   1.
   3.
   1.
   3.
   3.
   3.
   1.
   3.
   1.
   1.
   1.
   1.
我想知道前5个元素,6-13和14-17是否相同

这样做的目的是识别集群解决方案中放置错误的元素

我已经尝试了前5个元素


   ISet=5
   IVer=7
   IVir=5
for i=1:ISet
       if(isequal(FIRSTMIN(i,1,2),FIRSTMIN(i+1,1,2))==%f)
           numMisp=numMisp+1
           mprintf("Set misp: %i",numMisp)

       end
   end 
对于接下来的6到13个元素

    for i=ISet+1:IVer+ISet-1

        if(isequal(FIRSTMIN(i,1,2),FIRSTMIN(i+1,1,2))==%f)
            mprintf("%i %i Ver misp: %i\n",FIRSTMIN(i,1,2),FIRSTMIN(i+1,1,2),i)
            numMisp=numMisp+1
        end
    end    
对于接下来的14到17个元素

for i=IVer+ISet:IVer+IVir-1
        if(isequal(FIRSTMIN(i,1,2),FIRSTMIN(i+1,1,2))==%f)
            mprintf("%i %i Ver misp: %i\n",FIRSTMIN(i,1,2),FIRSTMIN(i+1,1,2),i)
            numMisp=numMisp+1
            mprintf("Vir misp: %i",i)
        end
    end  
您可以为此使用unique。例如,以下测试检查前五个元素是否相同

x=[2 2 2 2 2 1 3 1 3 3 3 1 3 1 1 1 1];
if length(unique(x(1:5))) == 1
//
end

通过将1:5替换为6:13,然后再替换为14:17,可以对其他集群执行相同的操作。

它只获取唯一值,而不获取不同值的出现情况使用完整语法[u,k]=uniquex并阅读有关此命令的Scilab帮助页。