# Combine Categorical Arrays Using Multiplication

This example shows how to use the `times` function to combine categorical arrays, including ordinal categorical arrays and arrays with undefined elements. When you call `times` on two categorical arrays, the output is a categorical array with new categories. The set of new categories is the set of all the ordered pairs created from the categories of the input arrays, or the Cartesian product. `times` forms each element of the output array as the ordered pair of the corresponding elements of the input arrays. The output array has the same size as the input arrays.

### Combine Two Categorical Arrays

Combine two categorical arrays using `times`. The input arrays must have the same number of elements, but can have different numbers of categories.

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

### Cartesian Product of Categories

Show the categories of `C`. The categories are all the ordered pairs that can be created from the categories of `A` and `B`, also known as the Cartesian product.

`categories(C)`
```ans = 6x1 cell {'blue +' } {'blue -' } {'green +'} {'green -'} {'red +' } {'red -' } ```

As a consequence, `A.*B` does not equal `B.*A`.

`D = B.*A`
```D = 1x3 categorical + blue - red + green ```
`categories(D)`
```ans = 6x1 cell {'+ blue' } {'+ green'} {'+ red' } {'- blue' } {'- green'} {'- red' } ```

### Multiplication with Undefined Elements

Combine two categorical arrays. If either `A` or `B` have an undefined element, the corresponding element of `C` is `undefined`.

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

### Cartesian Product of Ordinal Categorical Arrays

Combine two ordinal categorical arrays. `C` is an ordinal categorical array only if `A` and `B` are both ordinal. The ordering of the categories of `C` follows from the orderings of the input categorical arrays.

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