Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

unique

Valores únicos en array

Sintaxis

C = unique(A)
C = unique(A,setOrder)
C = unique(A,occurrence)
C = unique(A,___,'rows')
C = unique(A,'rows',___)
[C,ia,ic] = unique(___)
[C,ia,ic] = unique(A,'legacy')
[C,ia,ic] = unique(A,'rows','legacy')
[C,ia,ic] = unique(A,occurrence,'legacy')
[C,ia,ic] = unique(A,'rows',occurrence,'legacy')

Descripción

ejemplo

C = unique(A) devuelve los mismos datos que en A, pero sin repeticiones. C está en orden ordenada.

  • Si A es una tabla o un calendario, unique devuelve las filas únicas de A en orden ordenada. Para los horarios, unique toma en cuenta los tiempos de fila y los valores de fila al determinar si las filas son únicas y ordena el horario de salida C por tiempos de fila.

ejemplo

C = unique(A,setOrder) devuelve los valores exclusivos de A en un orden específico. setOrder puede ser 'sorted' (predeterminado) o 'stable'.

C = unique(A,occurrence) especifica qué índices se devolverán en caso de valores repetidos. occurrence puede ser 'first' (predeterminado) o 'last'.

ejemplo

C = unique(A,___,'rows') y C = unique(A,'rows',___) tratan cada fila de A como una entidad única y devuelven las filas únicas de A en orden ordenada. Debe especificar A y, opcionalmente, puede especificar setOrder o occurrence.

La opción 'rows' no admite matrices de celdas.

[C,ia,ic] = unique(___) también devuelve los vectores de índice ia y ic utilizando cualquiera de las sintaxis anteriores.

  • Si A es un vector, C = A(ia) y A = C(ic).

  • Si A es una matriz o matriz, C = A(ia) y A(:) = C(ic).

  • Si se especifica la opción 'rows' , C = A(ia,:) y A = C(ic,:).

  • Si A es una tabla o un calendario, C = A(ia,:) y A = C(ic,:).

ejemplo

[C,ia,ic] = unique(A,'legacy') , [C,ia,ic] = unique(A,'rows','legacy'), [C,ia,ic] = unique(A,occurrence,'legacy')y [C,ia,ic] = unique(A,'rows',occurrence,'legacy') preservan el comportamiento de la función unique de R2012b y versiones anteriores.

La opción 'legacy' no admite matrices categóricas, matrices DateTime, matrices de duración, matrices de calendarDuration, tablas o horarios.

Ejemplos

contraer todo

Defina un vector con un valor repetido.

A = [9 2 9 5];

Busque los valores exclusivos de A.

C = unique(A)
C = 1×3

     2     5     9

Defina una tabla con datos repetidos.

Name = {'Fred';'Betty';'Bob';'George';'Jane'};
Age = [38;43;38;40;38];
Height = [71;69;64;67;64];
Weight = [176;163;131;185;131];

A = table(Age,Height,Weight,'RowNames',Name)
A=5×3 table
              Age    Height    Weight
              ___    ______    ______

    Fred      38       71       176  
    Betty     43       69       163  
    Bob       38       64       131  
    George    40       67       185  
    Jane      38       64       131  

Busque las filas únicas de A.

C = unique(A)
C=4×3 table
              Age    Height    Weight
              ___    ______    ______

    Bob       38       64       131  
    Fred      38       71       176  
    George    40       67       185  
    Betty     43       69       163  

unique devuelve las filas de A en orden ordenada por la primera variable, Age y, a continuación, por la segunda variable, Height.

Defina un vector con un valor repetido.

A = [9 2 9 5];

Busque los valores exclusivos deA y los vectores de índice ia y ic, tales que C = A(ia) y A = C(ic).

[C, ia, ic] = unique(A)
C = 1×3

     2     5     9

ia = 3×1

     2
     4
     1

ic = 4×1

     3
     1
     3
     2

Cree una matriz de 12 por 3 con algunas filas repetidas.

A = randi(3,12,3)
A = 12×3

     3     3     3
     3     2     3
     1     3     3
     3     1     2
     2     2     2
     1     3     1
     1     3     3
     2     3     1
     3     2     1
     3     1     1
      ⋮

Busque las filas únicas de A basándose en los datos de las dos primeras columnas. Especifique tres salidas para devolver los vectores de índice ia y ic.

[C,ia,ic] = unique(A(:,1:2),'rows')
C = 6×2

     1     3
     2     2
     2     3
     3     1
     3     2
     3     3

ia = 6×1

     3
     5
     8
     4
     2
     1

ic = 12×1

     6
     5
     1
     4
     2
     1
     1
     3
     5
     4
      ⋮

Utilice ia para indizar en A y recuperar las filas que tienen combinaciones únicas de elementos en las dos primeras columnas.

uA = A(ia,:)
uA = 6×3

     1     3     3
     2     2     2
     2     3     1
     3     1     2
     3     2     3
     3     3     3

Busque los elementos únicos en un vector y, a continuación, utilice accumarray para contar el número de veces que aparece cada elemento único.

Crear un vector de enteros aleatorios de 1 a 5.

a = randi([1 5],200,1);

Encuentra los elementos únicos en el vector. Devuelve los vectores de índice ia y ic.

[C,ia,ic] = unique(a);

Contar el número de veces que cada elemento de C aparece en a. Especifique ic como la primera entrada a accumarray y 1 como segunda entrada de modo que la función cuente subíndices repetidos en ic. Resumir los resultados.

a_counts = accumarray(ic,1);
value_counts = [C, a_counts]
value_counts = 5×2

     1    46
     2    36
     3    38
     4    39
     5    41

Utilice el argumento setOrder para especificar el orden de los valores en C.

Especifique 'stable' si desea que los valores de C tengan el mismo orden que en A.

A = [9 2 9 5];
[C, ia, ic] = unique(A,'stable')
C = 1×3

     9     2     5

ia = 3×1

     1
     2
     4

ic = 4×1

     1
     2
     1
     3

Como alternativa, puede especificar el orden 'sorted' .

[C, ia, ic] = unique(A,'sorted')
C = 1×3

     2     5     9

ia = 3×1

     2
     4
     1

ic = 4×1

     3
     1
     3
     2

Defina un vector que contenga NaN.

A = [5 5 NaN NaN];

Busque los valores exclusivos de A.

C = unique(A)
C = 1×3

     5   NaN   NaN

unique trata los valores de NaN como distintos.

Cree un vector x. Obtenga un segundo vector y transformando y untransformating x. Esta transformación introduce diferencias de redondeo en y.

x = (1:6)'*pi;
y = 10.^log10(x);

Compruebe que x y y no son idénticos al tomar la diferencia.

x-y
ans = 6×1
10-14 ×

    0.0444
         0
         0
         0
         0
   -0.3553

Utilice unique para buscar los elementos exclusivos del vector concatenado [x;y]. La función unique realiza comparaciones exactas y determina que algunos valores de x no son exactamente iguales a los valores de y. Estos son los mismos elementos que tienen una diferencia no cero en x-y. Por lo tanto, c contiene valores que aparecen para ser duplicados.

c = unique([x;y])
c = 8×1

    3.1416
    3.1416
    6.2832
    9.4248
   12.5664
   15.7080
   18.8496
   18.8496

Utilice uniquetol para realizar la comparación mediante una tolerancia pequeña. uniquetol trata los elementos que están dentro de la tolerancia como iguales.

C = uniquetol([x;y])
C = 6×1

    3.1416
    6.2832
    9.4248
   12.5664
   15.7080
   18.8496

Crear una matriz de celdas de vectores de caracteres.

A = {'one','two','twenty-two','One','two'};

Busque los vectores de caracteres únicos contenidos en A.

C = unique(A)
C = 1x4 cell array
    {'One'}    {'one'}    {'twenty-two'}    {'two'}

Cree una matriz de celdas de vectores de caracteres, A, donde algunos de los vectores tienen espacio en blanco que se arrastra.

A = {'dog','cat','fish','horse','dog ','fish '};

Busque los vectores de caracteres únicos contenidos en A.

C = unique(A)
C = 1x6 cell array
    {'cat'}    {'dog'}    {'dog '}    {'fish'}    {'fish '}    {'horse'}

unique trata el espacio en blanco que se arrastra en matrices de vectores de caracteres como caracteres distintos.

Utilice el marcador 'legacy' para preservar el comportamiento de unique de R2012b y versiones anteriores del código.

Busque los elementos exclusivos de A con el comportamiento actual.

A = [9 2 9 5];
[C1, ia1, ic1] = unique(A)
C1 = 1×3

     2     5     9

ia1 = 3×1

     2
     4
     1

ic1 = 4×1

     3
     1
     3
     2

Busque los elementos únicos de Ay conserve el comportamiento heredado.

[C2, ia2, ic2] = unique(A, 'legacy')
C2 = 1×3

     2     5     9

ia2 = 1×3

     2     4     3

ic2 = 1×4

     3     1     3     2

Argumentos de entrada

contraer todo

Array de entrada.

  • Si A es una tabla, unique no tomar en cuenta los nombres de las filas. Dos filas que tienen los mismos valores, pero diferentes nombres, se consideran iguales.

  • Si A es un calendario, unique toma en cuenta los tiempos de las filas. Dos filas que tienen los mismos valores, pero diferentes veces, no se consideran iguales.

A también puede ser un objeto con los siguientes métodos de clase:

  • sort (o sortrows para la opción 'rows' )

  • ne

Los métodos de la clase Object deben ser coherentes entre sí. Estos objetos incluyen matrices heterogéneas derivadas de la misma clase raíz. Por ejemplo, A puede ser una matriz de identificadores para objetos gráficos.

El indicador Order, especificado como 'sorted' o 'stable', indica el orden de los valores (o filas) de C.

Pedir banderaSignificado
'sorted'Los valores (o filas) de C devuelven en orden ordenada. Por ejemplo: C = unique([5 5 3 4],'sorted') devuelve C = [3 4 5].
'stable'Los valores (o filas) de C se devuelven en el mismo orden que en A. Por ejemplo: C = unique([5 5 3 4],'stable') devuelve C = [5 3 4].

Tipos de datos: char | string

El indicador de ocurrencia, especificado como 'first' o 'last', indica si ia debe contener los índices primero o último a los valores repetidos encontrados en A .

Indicador de ocurrenciaSignificado
'last'Si hay valores repetidos (o filas) en A, ia contiene el índice hasta la última ocurrencia del valor repetido. Por ejemplo: [C,ia,ic] = unique([9 9 9],'last','legacy') devuelve ia = 3. Este es el comportamiento predeterminado cuando se especifica el indicador 'legacy' .
'first'Si hay valores repetidos (o filas) en A, ia contiene el índice para la primera aparición del valor repetido. Por ejemplo: [C,ia,ic] = unique([9 9 9],'first') devuelve ia = 1. Este es el comportamiento predeterminado.

Tipos de datos: char | string

Argumentos de salida

contraer todo

Datos exclusivos de A, devueltos como una matriz. La clase de C es la misma que la clase de la entrada A. La forma de C depende de si la entrada es un vector o una matriz:

  • Si no se especifica el indicador 'rows' y A es un vector de fila, C es un vector de fila.

  • Si no se especifica el indicador 'rows' y A no es un vector de fila, C es un vector de columna.

  • Si se especifica el indicador 'rows' , C es una matriz que contiene las filas únicas de A.

Index to A, devuelto como vector de columna de índices a la primera ocurrencia de de elementos repetidos. Cuando se especifica el indicador 'legacy' , ia es un vector de fila que contiene índices a la última aparición de los elementos repetidos de .

Los índices satisfacen generalmente C = A(ia). Si A es una tabla, o si se especifica la opción 'rows' , C = A(ia,:).

Índice de C, devuelto como vector de columna cuando no se especifica el indicador 'legacy' . ic contiene índices que satisfacen las propiedades siguientes.

  • Si A es un vector, A = C(ic).

  • Si A es una matriz o matriz, A(:) = C(ic).

  • Si A es una tabla, o si se especifica la opción 'rows' , A = C(ic,:).

Sugerencias

  • Utilice uniquetol para buscar números de punto flotante únicos mediante una tolerancia.

  • Para encontrar filas únicas en tablas o horarios con respecto a un subconjunto de variables, puede utilizar el subíndice de columna. Por ejemplo, puede utilizar unique(A(:,vars)), donde vars es un entero positivo, un vector de enteros positivos, un nombre de variable, una matriz de celdas de nombres de variable o un vector lógico. Como alternativa, puede utilizar vartype para crear un subscript que seleccione variables de un tipo especificado.

Capacidades ampliadas

Consulte también

| | | | | | |

Introducido antes de R2006a