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

Примечание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

speciesNom2 = nominal(species,{'seto','vers','virg'});
getlabels(speciesNom2)
ans = 1x3 cell
    {'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
     large      medium      small 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

| | |

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

Больше о