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

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

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

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

Для генерации кода используйте categorical функция, чтобы создать категориальные массивы. Например, предположите, что входной параметр к вашей функции MATLAB® является числовым массивом произвольного размера, элементы которого имеют значения любого 1, 2, или 3. Можно преобразовать эти значения в категории smallСредняя, и 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:

Похожие темы