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

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

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

Задайте категориальные массивы для генерации кода

Для генерации кода используйте 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 toolbox:

Похожие темы