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

Примечание

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 указывает, что неравенство имеет место.

См. также

| | |

Похожие примеры

Подробнее о