Main Content

categorical 配列のコード生成

categorical 配列は、離散カテゴリの有限集合からの値をもつデータを格納します。カテゴリの順序を指定できますが、これは必須ではありません。categorical 配列は、値のわかりやすい名前を維持しつつ、非数値データの効率的な保存と操作を提供します。

コード生成で categorical 配列を使用する場合は、次の制限に従ってください。

コード生成用の categorical 配列の定義

コード生成用に、関数 categorical を使用して categorical 配列を作成します。たとえば、MATLAB® の関数への入力引数が、要素が 12、または 3 のいずれかの値である任意のサイズの数値配列であるとします。以下のコードに示すように、これらの値をカテゴリ smallmedium、および large に変換し、入力配列を categorical 配列に変換できます。

function c = foo(x) %#codegen
    c = categorical(x,1:3,{'small','medium','large'});
end

categorical 配列で許容される演算

コード生成では、次の表に示す categorical 配列に対する演算に制限されます。

演算メモ

代入演算子: =

c = categorical(1:3,1:3,{'small','medium','large'});
c(1) = 'large';

コード生成では次に対する代入演算子 = の使用はサポートされません。

  • 要素の削除。

  • categorical 配列のサイズの拡張。

  • 新規カテゴリの追加 (配列がプロテクトされていない場合でも)。

関係演算子: < > <= >= == ~=

c = categorical(1:3,'Ordinal',true);
tf = c(1) < c(2);

コード生成ではすべての関係演算子がサポートされます。

数値型へのキャスト

c = categorical(1:3);
double(c(1));

コード生成では categorical 配列の倍精度または単精度浮動小数点数の配列、または整数へのキャストがサポートされます。

テキストへの変換

c = categorical(1:3,1:3,{'small','medium','large'});
c1 = cellstr(c(1)); % One element
c2 = cellstr(c);    % Entire array

コード生成では関数 char または関数 string を使用した categorical 値のテキストへの変換はサポートされません。

categorical 配列の 1 つ以上の要素をテキストに変換するには、関数 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];

コード生成では任意の次元に沿った categorical 配列の連結がサポートされます。

MATLAB categorical 配列をサポートするツールボックス関数

コード生成では、次の MATLAB ツールボックス関数で categorical 配列を使用できます。

関連するトピック