## Resolve Error: Size Mismatches

### Issue

The code generator produces size mismatch errors when array sizes are incompatible or implicit expansion is unavailable.

Most binary operators and functions in MATLAB® and generated code support numeric arrays that have compatible sizes. Two inputs have compatible sizes if, for every dimension, the sizes of the inputs are either the same or one of them is `1`. In the simplest cases, two array sizes are compatible if they are exactly the same or if one is a scalar. For example:

```magic(4) + ones(4,1); % where magic(4) = ones(4,1) = % 16 2 3 13 1 % 5 11 10 8 1 % 9 7 6 12 1 % 4 14 15 1 1```
```ans = 17 3 4 14 6 12 11 9 10 8 7 13 5 15 16 2 ```

The second array implicitly expands to match the dimensions of the first matrix. For more information, see Compatible Array Sizes for Basic Operations.

Implicit expansion might be unavailable while performing binary operations on arrays of compatible size if any of the following conditions are true :

Size mismatches or unavailability of implicit expansion generates the following error:

```%Size mismatch between two arrays Size mismatch (size [10][1] ~= size [1][10]) ```

When the above conditions are true for structure fields and cell elements, the code generator produces the following errors respectively:

```%Size mismatch in structure fields Size mismatch (size [10][1] ~= size [1][10]) in field StructField %Size mismatch in cell elements Size mismatch (size [10][1] ~= size [1][10]) in element cellElement.```

### Possible Solutions

Verify that, in binary operations where you enable implicit expansion, the operations are in the scope of functions. Check for these conditions:

#### Perform Binary Operations on Arrays of Compatible Sizes

If you must carry out a binary operation on arrays of differing sizes, make sure that sizes are compatible and implicit expansion is enabled in the function scope. See Compatible Array Sizes for Basic Operations.

#### Call Binary Operation Without `coder.noImplicitExpansionInFunction`

If you must include `coder.noImplicitExpansionInFunction` in your function, call the required binary operation in another function where implicit expansion is enabled.

#### Call Binary Operation Without `coder.sameSizeBinaryOp`

If you do not want implicit expansion for a specific operation, provide input arguments that are of same size to `coder.sameSizeBinaryOp` (MATLAB Coder). `coder.sameSizeBinaryOp` does not allow scalar expansion and generates an error if the input arguments are not of the same size.

#### Enable Implicit Expansion for Project

If enabling implicit expansion does not affect your project, consider enabling it by setting the `EnableImplicitExpansion` property in your code configuration object to `true`.

If you need implicit expansion for specific operations, consider using `coder.sameSizeBinaryOp` or `coder.noImplicitExpansionInFunction` to prevent the other operations from implicitly expanding. See Optimize Implicit Expansion in Generated Code (MATLAB Coder).