Contenido principal

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

unique

Descripción

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'.

ejemplo

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

C = unique(A,setOrder,occurrence) especifica tanto el orden como los índices que deben devolverse en caso de que los valores sean repetidos. (desde R2025a)

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, opcionalmente, puede especificar setOrder, occurrence, o bien ambos.

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

ejemplo

[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,:).

[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 categorical, arreglos datetime, arreglos duration, arreglos calendarDuration, tablas u horarios.

ejemplo

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 que contenga valores faltantes.

A = [5 8 NaN NaN];

Busque los valores únicos en el vector. unique trata cada instancia de un valor faltante como un valor distinto.

C = unique(A)
C = 1×4

     5     8   NaN   NaN

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 = 1×4 cell
    {'One'}    {'one'}    {'twenty-two'}    {'two'}

Cree un arreglo de cadenas donde algunas de las cadenas tengan espacios en blanco al final.

A = ["dog" "cat" "horse" "horse" "dog "];

Busque las cadenas únicas en el arreglo de cadenas. unique trata las cadenas con espacios en blanco al final como cadenas distintas.

C = unique(A)
C = 1×4 string
    "cat"    "dog"    "dog "    "horse"

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

Datos de entrada, especificados como un arreglo, una tabla o un horario.

  • 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 estos métodos de clase:

  • sort (o sortrows, si especifica la opción 'rows')

  • ne (no es igual)

Los métodos no deben tener comportamientos o resultados contradictorios. sort o sortrows deben utilizar un algoritmo de ordenación estable. Por ejemplo, puede especificar A como un arreglo heterogéneo derivado de una clase raíz común (por ejemplo, un arreglo 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
'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.
'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'.

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

expandir todo

Historial de versiones

Introducido antes de R2006a

expandir todo