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

Категориальные массивы хранят данные со значениями из конечного набора дискретных категорий. Можно указать заказ для категорий, но он не требуется. Категориальный массив обеспечивает эффективное хранение и обработку нечисловых данных, сохраняя при этом значимые имена значений.

При использовании категориальных массивов с генерацией кода соблюдайте следующие ограничения:

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

Для создания кода используйте categorical для создания категориальных массивов. Например, предположим, что входной аргумент для функции MATLAB ® является числовым массивом произвольного размера, элементы которого имеют значения 1, 2, или 3. Эти значения можно преобразовать в категории. small, medium, и large и превратить входной массив в категориальный массив, как показано в этом коде.

function c = foo(x) %#codegen
    c = categorical(x,1:3,{'small','medium','large'});
end

Разрешенные операции с категориальными массивами

Для создания кода доступны только операции с категориальными массивами, перечисленными в этой таблице.

ОперацияПримерПримечания

оператор назначения: =

c = categorical(1:3,1:3,{'small','medium','large'});
c(1) = 'large';

Создание кода не поддерживает использование оператора присвоения = кому:

  • Удаление элемента.

  • Разверните размер категориального массива.

  • Добавьте новую категорию, даже если массив не защищен.

реляционные операторы: < > <= >= == ~=

c = categorical(1:3,'Ordinal',true);
tf = c(1) < c(2);

Генерация кода поддерживает все реляционные операторы.

приведение к числовому типу

c = categorical(1:3);
double(c(1));

Генерация кода поддерживает приведение категориальных массивов к массивам чисел с плавающей запятой двойной или одинарной точности или к целым числам.

преобразование в текст

c = categorical(1:3,1:3,{'small','medium','large'});
c1 = cellstr(c(1)); % One element
c2 = cellstr(c);    % Entire array

Создание кода не поддерживает использование char или string для преобразования категориальных значений в текст.

Чтобы преобразовать один или несколько элементов категориального массива в текст, используйте cellstr функция.

операция индексирования

c = categorical(1:3,1:3,{'small','medium','large'});
idx = [1 2];
c(idx);
idx = logical([1 1 0]);
c(idx);

Создание кода поддерживает индексирование по позициям, линейное индексирование и логическое индексирование.

связь

c1 = categorical(1:3,1:3,{'small','medium','large'});
c2 = categorical(4:6,[2 1 4],{'medium','small','extra-large'});
c = [c1 c2];

Генерация кода поддерживает конкатенацию категориальных массивов по любому измерению.

Функции панели инструментов MATLAB, поддерживающие категориальные массивы

Для создания кода можно использовать категориальные массивы со следующими функциями панели инструментов MATLAB:

Связанные темы