Создайте номинальные и порядковые массивы

Примечание

nominal и типы данных массива ordinal могут быть удалены в будущем релизе. Чтобы представлять упорядоченный и неупорядоченные дискретные, нечисловые данные, используйте Категориальные массивы (MATLAB) тип данных вместо этого.

Создайте номинальные массивы

Этот пример показывает, как создать номинальные массивы с помощью nominal.

Загрузка демонстрационных данных.

Переменная species 150 1 массив ячеек из символьных векторов, содержащий имя разновидностей для каждого наблюдения. Уникальные типы разновидностей являются setosa, versicolor, и virginica.

load fisheriris
unique(species)
ans = 3x1 cell array
    {'setosa'    }
    {'versicolor'}
    {'virginica' }

Создайте номинальный массив.

Преобразуйте species в номинальный массив с помощью категорий, происходящих в данных.

speciesNom = nominal(species);
class(speciesNom)
ans = 
'nominal'

Исследуйте уровни категории.

Номинальный массив, speciesNom, имеет три уровня, соответствующие трем уникальным разновидностям. Уровни номинального массива являются набором возможных значений, которые могут принять его элементы.

getlevels(speciesNom)
ans = 1x3 nominal array
     setosa      versicolor      virginica 

Номинальный массив может иметь больше уровней, чем, на самом деле появляются в данных. Например, номинальный массив под названием AllSizes может иметь уровни small, medium и large, но у вас могут только быть наблюдения, которые являются medium и large в ваших данных. Чтобы видеть, какие уровни номинального массива на самом деле присутствуют в данных, используйте unique, например, unique(AllSizes).

Исследуйте подписи категорий.

Каждый уровень имеет метку. По умолчанию nominal маркирует уровни категории значениями, происходящими в данных. Для speciesNom эти метки являются типами разновидностей.

getlabels(speciesNom)
ans = 1x3 cell array
    {'setosa'}    {'versicolor'}    {'virginica'}

Задайте свои собственные подписи категорий.

Можно задать ваш владеть марками для каждого уровня категории. Можно задать метки, когда вы создаете номинальный массив.

speciesNom2 = nominal(species,{'seto','vers','virg'});
getlabels(speciesNom2)
ans = 1x3 cell array
    {'seto'}    {'vers'}    {'virg'}

Можно также изменить подписи категорий на существующем номинальном массиве с помощью setlabels

Проверьте новые подписи категорий.

Проверьте, что новые метки соответствуют исходным меткам в speciesNom.

isequal(speciesNom=='setosa',speciesNom2=='seto')
ans = logical
   1

1 логического значения указывает, что две метки, 'setosa' и 'seto', соответствуют тем же наблюдениям.

Создайте порядковые массивы

Этот пример показывает, как создать порядковые массивы с помощью ordinal.

Загрузка демонстрационных данных.

AllSizes = {'medium','large','small','small','medium',...
            'large','medium','small'};

Созданная переменная, AllSizes, является массивом ячеек из символьных векторов, содержащим измерения размера на восьми объектах.

Создайте порядковый массив.

Создайте порядковый массив с уровнями категории и метками, соответствующими значениям в массиве ячеек (уровни по умолчанию и метки).

sizeOrd = ordinal(AllSizes);
getlevels(sizeOrd)
ans = 1x3 ordinal array
     large      medium      small 

Исследуйте подписи категорий.

По умолчанию ordinal использует векторы исходного символа в качестве подписей категорий. Порядок по умолчанию категорий возрастает алфавитный порядок.

getlabels(sizeOrd)
ans = 1x3 cell array
    {'large'}    {'medium'}    {'small'}

Добавьте дополнительные категории.

Предположим, что вы хотите включать дополнительные уровни для порядкового массива, xsmall и xlarge, даже при том, что они не происходят в исходных данных. Чтобы задать дополнительные уровни, используйте третий входной параметр для ordinal.

sizeOrd2 = ordinal(AllSizes,{},...
                  {'xsmall','small','medium','large','xlarge'});
getlevels(sizeOrd2)
ans = 1x5 ordinal array
     xsmall      small      medium      large      xlarge 

Исследуйте подписи категорий.

Чтобы видеть, какие уровни на самом деле присутствуют в данных, используйте unique.

unique(sizeOrd2)
ans = 1x3 ordinal array
     small      medium      large 

Задайте порядок категории.

Преобразуйте AllSizes в порядковый массив с категориями small <medium <large. Обычно порядковый массив отличен от номинального массива, потому что существует естественное упорядоченное расположение для уровней порядкового массива. Можно использовать третий входной параметр для ordinal, чтобы задать порядок по возрастанию уровней. Здесь, порядок уровней является наименьшим к самому большому.

sizeOrd = ordinal(AllSizes,{},{'small','medium','large'});
getlevels(sizeOrd)
ans = 1x3 ordinal array
     small      medium      large 

Второй входной параметр для ordinal является списком меток для уровней категории. То, когда вы используете, заключает в фигурные скобки {} для меток уровня, ordinal использует метки, заданные в третьем входном параметре (метки прибывают из уровней, существующих в данных, если только один входной параметр используется).

Сравните элементы.

Проверьте, что первый объект (с размером medium) меньше, чем второй объект (с размером large).

sizeOrd(1) < sizeOrd(2)
ans = logical
   1

1 логического значения указывает, что неравенство содержит.

Смотрите также

| | |

Связанные примеры

Больше о