主要内容

类别数组的代码生成

类别数组存储来自有限离散类别集的值。您可以指定类别的顺序,但这不是必需的。分类数组提供了对非数字数据的有效存储和操作,同时还为值维护有意义的名称。

当您使用分类数组与代码生成时,请遵守以下限制:

定义用于代码生成的类别数组

要生成代码,请使用分类函数,用于创建分类数组。例如,假设MATLAB的输入参数®函数是一个任意大小的数字数组,其元素的值为12,或3..您可以将这些值转换为类别媒介,并将输入数组转换为分类数组,如下面的代码所示。

函数c = foo (x)% # codegenc =分类(x,1:3,{“小”“媒介”'大的'});结束

允许对分类数组的操作

对于代码生成,您将仅限于本表中列出的分类阵列的操作。

手术 例子 笔记

赋值运算符:

c =分类(1:3,1:3,{“小”“媒介”'大的'});c (1) ='大的'

代码生成不支持使用赋值操作符万博1manbetx:

  • 删除元素。

  • 展开分类数组的大小。

  • 添加一个新的类别,即使数组不受保护。

关系运算符:< > <= >= == ~=

c =分类(1:3,“顺序”,真正的);t = c(1) < c(2);

代码生成支持所有关系运算符。万博1manbetx

转换为数字类型

c =分类(1:3);双(c (1));

代码生成支持将类别数组转换为双精万博1manbetx度或单精度浮点数数组,或整数。

转换为文本

c =分类(1:3,1:3,{“小”“媒介”'大的'});c1 = cellstr (c (1));%一个元素c2 = cellstr (c);%的整个数组

代码生成不支持使用万博1manbetx字符或者字符串函数将分类值转换为文本。

要将分类数组的一个或多个元素转换为文本,请使用cellstr函数。

索引操作

c =分类(1:3,1:3,{“小”“媒介”'大的'});Idx = [1 2];c (idx);Idx =逻辑([1 1 0]);c (idx);

代码生成支持按位置索引、线性索引万博1manbetx和逻辑索引。

连接

c1 =分类(1:3,1:3,{“小”“媒介”'大的'});C2 = categorical(4:6,[2 1 4],{“媒介”“小”“超大”});C = [c1 c2];

代码生成支持沿着任何维度连接类别万博1manbetx数组。

MATLAB支持分类数组的工具箱函数万博1manbetx

对于代码生成,你可以使用分类数组和MATLAB工具箱函数:

相关话题