Примечание
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
указывает, что неравенство содержит.
getlabels
| getlevels
| nominal
| ordinal