Категориальные массивы хранят данные со значениями от конечного множества дискретных категорий. Можно задать порядок для категорий, но он не требуется. Категориальный массив обеспечивает эффективное устройство хранения данных и манипуляцию нечисловых данных, также поддерживая понятные имена для значений.
Когда вы используете категориальные массивы с генерацией кода, придерживаетесь этих ограничений:
Для генерации кода используйте функцию 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
| Генерация кода не поддерживает использование Чтобы преобразовать один или несколько элементов категориального массива к тексту, используйте функцию |
индексация операции |
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: