Main Content

Set exclusive OR of two arrays

returns the data of `C`

= setxor(`A,B`

)`A`

and `B`

that are not
in their intersection (the symmetric difference), with no repetitions. That is,
`setxor`

returns the data that occurs in
`A`

or `B`

, but not both.
`C`

is in sorted order.

If

`A`

and`B`

are tables or timetables, then`setxor`

returns the rows that occur in one or the other of the two tables, but not both. For timetables,`setxor`

takes row times into account to determine equality, and sorts the output timetable`C`

by row times.

and
`C`

= setxor(`A,B`

,___,'rows')

treat each row of `C`

= setxor(`A,B`

,'rows',___)`A`

and each row of `B`

as
single entities and returns the rows of `A`

and
`B`

that are not in their intersection, with no
repetitions. You must specify `A`

and `B`

and
optionally can specify `setOrder`

.

The `'rows'`

option does not support cell arrays, unless one
of the inputs is either a categorical array or a datetime array.

`[`

also returns index vectors `C`

,`ia`

,`ib`

]
= setxor(___)`ia`

and `ib`

using
any of the previous syntaxes.

Generally, the values in

`C`

are a sorted combination of the elements of`A(ia)`

and`B(ib)`

.If the

`'rows'`

option is specified, then`C`

is a sorted combination of the rows of`A(ia,:)`

and`B(ib,:)`

.If

`A`

and`B`

are tables or timetables, then`C`

is a sorted combination of the rows of`A(ia,:)`

and`B(ib,:)`

.

To find the symmetric difference with respect to a subset of variables from a table or timetable, you can use column subscripting. For example, you can use

`setxor(A(:,`

, where),B(:,`vars`

))`vars`

is a positive integer, a vector of positive integers, a variable name, a cell array of variable names, or a logical vector. Alternatively, you can use`vars`

`vartype`

to create a subscript that selects variables of a specified type.