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