使用乘法合并分类数组
此示例说明如何使用 times
函数来合并分类数组,包括有序分类数组和包含未定义元素的数组。当对两个分类数组调用 times
时,将会输出一个包含新类别的分类数组。新类别集是从输入数组的类别创建的所有有序对集合,即笛卡尔积。times
使用输入数组对应元素的有序对构成输出数组的每个元素。输出数组的大小与输入数组相同。
合并两个分类数组
使用 times
合并两个分类数组。各输入数组必须具有相同的元素数量,但可以包含不同的类别数量。
A = categorical({'blue','red','green'}); B = categorical({'+','-','+'}); C = A.*B
C = 1x3 categorical
blue + red - green +
类别的笛卡尔积
显示 C
的类别。这些类别是可从 A
和 B
的类别创建的所有有序对,也称为笛卡尔积。
categories(C)
ans = 6x1 cell
{'blue +' }
{'blue -' }
{'green +'}
{'green -'}
{'red +' }
{'red -' }
因此,A.*B
并不等于 B.*A
。
D = B.*A
D = 1x3 categorical
+ blue - red + green
categories(D)
ans = 6x1 cell
{'+ blue' }
{'+ green'}
{'+ red' }
{'- blue' }
{'- green'}
{'- red' }
使用未定义元素的乘法
合并两个分类数组。如果 A
或 B
包含未定义元素,C
的相应元素也将是 undefined
。
A = categorical({'blue','red','green','black'}); B = categorical({'+','-','+','-'}); A = removecats(A,{'black'}); C = A.*B
C = 1x4 categorical
blue + red - green + <undefined>
有序分类数组的笛卡尔积
合并两个有序分类数组。仅当 A
和 B
都是有序的,C
才是有序分类数组。C
的类别排序遵循输入分类数组的排序。
A = categorical({'blue','red','green'},{'green','red','blue'},'Ordinal',true); B = categorical({'+','-','+'},'Ordinal',true); C = A.*B; categories(C)
ans = 6x1 cell
{'green +'}
{'green -'}
{'red +' }
{'red -' }
{'blue +' }
{'blue -' }
另请参阅
categorical
| categories
| summary
| times