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.

Ventajas de utilizar matrices categóricas

Representación natural de datos categóricos

categorical es un tipo de datos para almacenar datos con valores de un conjunto finito de categorías discretas. Una alternativa común al uso de matrices categóricas es utilizar matrices de caracteres o matrices de vectores de caracteres. Para comparar valores en matrices de caracteres y matrices de vectores de caracteres, debe usar strcmp que puede ser engorroso. Con matrices categóricas, puede utilizar el operador lógico eq (==) para comparar elementos de la misma manera que se comparan las matrices numéricas. La otra alternativa común al uso de matrices categóricas es almacenar datos categóricos utilizando números enteros en matrices numéricas. El uso de matrices numéricas pierde toda la información descriptiva útil de los nombres de categorías, y también tiende a sugerir que los valores enteros tienen su significado numérico usual, que, para datos categóricos, no lo hacen.

Ordenación matemática de vectores de caracteres

Los arreglos categóricos son contenedores convenientes y eficientes para la memoria de datos no numéricos con valores de un conjunto finito de categorías discretas. Son especialmente útiles cuando las categorías tienen un ordenamiento matemático significativo, como una matriz con entradas del conjunto discreto de categorías {'small','medium','large'} donde small < medium < large.

No es posible realizar un pedido distinto del orden alfabético con matrices de caracteres o matrices de vectores de caracteres. Así, las comparaciones de desigualdad, como mayor y menor que, no son posibles. Con matrices categóricas, puede utilizar operaciones relacionales para probar la igualdad y realizar comparaciones de elementos que tengan un orden matemático significativo.

Reduzca los requisitos de memoria

En este ejemplo se muestra cómo comparar la memoria requerida para almacenar datos como una matriz de vectores de caracteres versus una matriz categórica. Los arrays categóricos tienen categorías que se definen como vectores de caracteres, los cuales pueden ser costosos de almacenar y manipular en una matriz de vectores de caracteres o array char. Las matrices categóricas almacenan sólo una copia de cada nombre de categoría, con frecuencia reduciendo la cantidad de memoria requerida para almacenar la matriz.

Cree un conjunto de celdas de ejemplo de vectores de caracteres.

state = [repmat({'MA'},25,1);repmat({'NY'},25,1);...     repmat({'CA'},50,1);...     repmat({'MA'},25,1);repmat({'NY'},25,1)];

Mostrar información sobre la variable state.

whos state
  Name         Size            Bytes  Class    Attributes    state      150x1             17400  cell                

La variable state es una matriz celular de vectores de caracteres que requieren 17.400 bytes de memoria.

Convierte state a una matriz categórica.

state = categorical(state);

Mostrar las categorías discretas en la variable state.

categories(state)
ans = 3x1 cell array
    {'CA'}
    {'MA'}
    {'NY'}

state contiene 150 elementos, pero sólo tres categorías distintas.

Mostrar información sobre la variable state.

whos state
  Name         Size            Bytes  Class          Attributes    state      150x1               500  categorical               

Hay una reducción significativa en la memoria requerida para almacenar la variable.

Consulte también

|

Ejemplos relacionados

Más acerca de