本文演示了如何对分类数组执行关系运算。
基于字符向量元胞数组创建分类数组
创建一个 2×4 的字符向量元胞数组。
C = {'blue' 'red' 'green' 'blue';...
'blue' 'green' 'green' 'blue'};
colors = categorical(C)
colors = 2x4 categorical
blue red green blue
blue green green blue
colors 是一个 2×4 的分类数组。
列出分类数组的类别。
categories(colors)
ans = 3x1 cell
{'blue' }
{'green'}
{'red' }
确定元素是否相等
使用关系运算符 eq (==) 比较 colors 的第一行和第二行。
colors(1,:) == colors(2,:)
ans = 1x4 logical array
1 0 1 1
两行数据间仅第二列的值有所不同。
比较整个数组与字符向量
将整个分类数组 colors 与字符向量 ‘blue’ 进行比较以查找所有 blue 值的位置。
colors == 'blue'
ans = 2x4 logical array
1 0 0 1
1 0 0 1
colors 中有四个蓝色条目,数组的每个角一个。
转换为有序分类数组
对 colors 中的类别添加数学排序。指定表示色谱排序的类别顺序 red < green < blue。
colors = categorical(colors,{'red','green' 'blue'},'Ordinal',true)
colors = 2x4 categorical
blue red green blue
blue green green blue
分类数组中的元素仍然相同。
列出 colors 中的离散类别。
categories(colors)
ans = 3x1 cell
{'red' }
{'green'}
{'blue' }
按顺序比较元素
确定 colors 的第一列中的元素是否大于第二列中的元素。
colors(:,1) > colors(:,2)
ans = 2x1 logical array
1
1
第一列中的两个值 blue 都大于第二列中的对应值 red 和 green。
查找 colors 中小于 ‘blue’ 的所有元素。
colors < 'blue'
ans = 2x4 logical array
0 1 1 0
0 1 1 0
函数 lt (<) 指示所有 green 和 red 值为 1 的位置。