exponenta event banner

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

Примечание

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

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

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

Загрузить данные образца.

Переменная species - клеточный массив символьных векторов, содержащий видовое имя для каждого наблюдения. Уникальными видами являются сетоза, версиколор и 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 указывает на то, что неравенство сохраняется.

См. также

| | |

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

Подробнее