categorical 配列のコード生成
categorical 配列は、離散カテゴリの有限集合からの値をもつデータを格納します。カテゴリの順序を指定できますが、これは必須ではありません。categorical 配列は、値のわかりやすい名前を維持しつつ、非数値データの効率的な保存と操作を提供します。
コード生成で categorical 配列を使用する場合は、次の制限に従ってください。
コード生成用の categorical 配列の定義
コード生成用に、関数 categorical
を使用して categorical 配列を作成します。たとえば、MATLAB® の関数への入力引数が、要素が 1
、2
、または 3
のいずれかの値である任意のサイズの数値配列であるとします。以下のコードに示すように、これらの値をカテゴリ small
、medium
、および 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'; | コード生成では次に対する代入演算子
|
関係演算子: |
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 | コード生成では関数 categorical 配列の 1 つ以上の要素をテキストに変換するには、関数 |
インデックス演算 |
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 配列を使用できます。