Main Content

unique

Valores únicos en un arreglo

Descripción

ejemplo

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

  • Si A es una tabla u horario, unique devuelve las filas únicas de A ordenadas. En el caso de los horarios, unique tiene en cuenta las horas y los valores de cada fila para determinar si estas son únicas y ordena el horario de salida C según las horas de cada fila.

  • Si A es un arreglo categórico, el orden se basa en el orden de las categorías.

ejemplo

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

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

ejemplo

C = unique(A,___,'rows') y C = unique(A,'rows',___) tratan cada fila de A como una entidad independiente y devuelven las filas únicas de A ordenadas. Debe especificar A y, de manera opcional, puede especificar setOrder u occurrence.

La opción 'rows' no es compatible con arreglos de celdas.

[C,ia,ic] = unique(___) también devuelve vectores de índices ia e ic mediante cualquiera de las sintaxis anteriores.

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

  • Si A es una matriz o un arreglo, 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 horario, 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') conservan el comportamiento de la función unique de la versión R2012b y anteriores.

La opción 'legacy' no es compatible con arreglos categóricos, arreglos datetime, arreglos duration, arreglos calendarDuration, tablas u horarios.

Ejemplos

contraer todo

Defina un vector con un valor repetido.

A = [9 2 9 5];

Encuentre los valores únicos de A.

C = unique(A)
C = 1×3

     2     5     9

Cree una tabla con algunos 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  

Encuentre las filas únicas de A. unique devuelve las filas de A ordenadas por la primera variable Age y después por la segunda variable Height.

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  

Encuentre las filas de la tabla con valores únicos en la primera variable Age. Si solo quiere que una variable de la tabla contenga valores únicos, puede utilizar los índices devueltos por unique para extraer esas filas de la tabla.

[C,ia] = unique(A.Age);
B = A(ia,:)
B=3×3 table
              Age    Height    Weight
              ___    ______    ______

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

Defina un vector con un valor repetido.

A = [9 2 9 5];

Encuentre los valores únicos de A y los vectores índice ia e 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 10 por 3 con algunas filas repetidas.

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

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

Encuentre las filas únicas de A en función de los datos de las dos primeras columnas. Especifique tres salidas para devolver los vectores índice ia e ic.

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

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

ia = 7×1

     6
     7
     3
     5
     1
     4
     2

ic = 10×1

     5
     7
     3
     6
     4
     1
     2
     4
     7
     7

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

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

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

Encuentre los elementos únicos en un vector y luego use accumarray para contar el número de veces que aparece cada elemento único.

Cree un vector de números enteros aleatorios del 1 al 5.

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

Encuentre los elementos únicos en el vector. Devuelva los vectores índice ia e ic.

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

Cuente el número de veces que cada elemento de C aparece en a. Especifique ic como primera entrada a accumarray y 1 como segunda entrada para que la función cuente los subíndices repetidos en ic. Resuma 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 de 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

También 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 de valores NaN.

A = [5 5 NaN NaN];

Encuentre los valores únicos de A.

C = unique(A)
C = 1×3

     5   NaN   NaN

unique trata los valores NaN como distintos.

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

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

Compruebe que x e y no son idénticos obteniendo la diferencia.

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

    0.0444
         0
         0
         0
         0
   -0.3553

Utilice unique para encontrar los elementos únicos en el 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. Son los mismos elementos que tienen una diferencia distinta de cero en x-y. Por lo tanto, c contiene valores que parecen 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 con una tolerancia pequeña. uniquetol trata como iguales los elementos que están dentro de la tolerancia.

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

    3.1416
    6.2832
    9.4248
   12.5664
   15.7080
   18.8496

Cree un arreglo de celdas de vectores de caracteres.

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

Encuentre los vectores de caracteres únicos que contiene A.

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

Cree un arreglo de celdas de vectores de caracteres, A, donde algunos de los vectores tengan un espacio en blanco final.

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

Encuentre los vectores de caracteres únicos que contiene A.

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

unique trata el espacio en blanco final de los arreglos de celdas de vectores de caracteres como un carácter distinto.

Use el indicador 'legacy' para conservar el comportamiento de unique de la versión R2012b y anteriores en su código.

Encuentre los elementos únicos 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

Encuentre los elementos únicos de A y 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

Arreglo de entrada.

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

  • Si A es un horario, unique tiene en cuenta las horas de las filas. Dos filas que tienen los mismos valores, pero horas diferentes, no se consideran iguales.

  • Si A es un arreglo categórico, el orden se basa en el orden de las categorías. Para ver el orden de un arreglo categórico, utilice la función categories.

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 las clases de los objetos deben ser coherentes entre sí. Estos objetos incluyen arreglos heterogéneos derivados de la misma clase raíz. Por ejemplo, A puede ser un arreglo de identificadores de objetos de gráficas.

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

IndicadorDescripción

'sorted'

Los valores (o filas) de C se devuelven en orden tal y como los devuelve sort.

Ejemplo

C = unique([5 5 3 4],'sorted')
C =

     3     4     5

'stable'

Los valores (o filas) de C vuelven en el mismo orden que en A.

Ejemplo

C = unique([5 5 3 4],'stable')
C =

     5     3     4

Tipos de datos: char | string

Indicador de aparición, especificado como 'first' o 'last', indica si ia debe contener el primer o el último índice de los valores repetidos encontrados en A.

Indicador de apariciónSignificado
'last'Si hay valores (o filas) repetidos en A, ia contiene el índice de la última aparición 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 (o filas) repetidos en A, ia contiene el índice de la primera aparición del valor repetido. Por ejemplo: [C,ia,ic] = unique([9 9 9],'first') devuelve ia = 1. Se trata del comportamiento predeterminado.

Tipos de datos: char | string

Argumentos de salida

contraer todo

Datos únicos de A, devueltos como un arreglo. 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 fila, C es un vector fila.

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

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

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

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

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

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

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

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

Sugerencias

  • Use uniquetol para encontrar números de punto flotante únicos mediante una tolerancia.

  • Para encontrar filas únicas en tablas u 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, un arreglo de celdas de nombres de variables o un vector lógico. También puede utilizar vartype para crear un subíndice que seleccione variables de un tipo especificado.

Capacidades ampliadas

Historial de versiones

Introducido antes de R2006a

Consulte también

| | | | | | |