Как узнать, есть ли другой элемент в одном массиве в Scilab? - PullRequest
0 голосов
/ 27 января 2020

Моя цель - проверить, есть ли неуместные объекты в одном массиве. например, массив

   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  

1 Ответ

1 голос
/ 27 января 2020

Вы можете использовать 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.

...