exponenta event banner

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

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

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

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

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

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