Main Content

使用乘法合并分类数组

此示例说明如何使用 times 函数来合并分类数组,包括有序分类数组和包含未定义元素的数组。当对两个分类数组调用 times 时,将会输出一个包含新类别的分类数组。新类别集是从输入数组的类别创建的所有有序对集合,即笛卡尔积。times 使用输入数组对应元素的有序对构成输出数组的每个元素。输出数组的大小与输入数组相同。

合并两个分类数组

使用 times 合并两个分类数组。各输入数组必须具有相同的元素数量,但可以包含不同的类别数量。

A = categorical({'blue','red','green'});
B = categorical({'+','-','+'});
C = A.*B
C = 1x3 categorical
     blue +      red -      green + 

类别的笛卡尔积

显示 C 的类别。这些类别是可从 AB 的类别创建的所有有序对,也称为笛卡尔积。

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'  }

使用未定义元素的乘法

合并两个分类数组。如果 AB 包含未定义元素,C 的相应元素也将是 undefined

A = categorical({'blue','red','green','black'});
B = categorical({'+','-','+','-'});
A = removecats(A,{'black'});
C = A.*B
C = 1x4 categorical
     blue +      red -      green +      <undefined> 

有序分类数组的笛卡尔积

合并两个有序分类数组。仅当 AB 都是有序的,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 -' }

另请参阅

| | |

相关示例

详细信息