Примечание
The 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