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

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

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

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

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

Похожие темы