类别数组存储来自有限离散类别集的值。您可以指定类别的顺序,但这不是必需的。分类数组提供了对非数字数据的有效存储和操作,同时还为值维护有意义的名称。
当您使用分类数组与代码生成时,请遵守以下限制:
要生成代码,请使用分类
函数,用于创建分类数组。例如,假设MATLAB的输入参数®函数是一个任意大小的数字数组,其元素的值为1
,2
,或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 要将分类数组的一个或多个元素转换为文本,请使用 |
索引操作 |
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工具箱函数: