# Matlab Oddities and Pitfalls¶

## Matrix Indexing¶

Matlab is perfectly fine with invalid matrix indices.

The following code should produce a syntax error:

```
x =
1 2 3
4 5 6
>> x(5)
ans =
3
```

This is a very common source of bugs.

## Load and Save¶

The `load`

command is insane. It writes variables to the workspace that cannot be seen in the code. Always use load as a function as in `m = load(filename)`

.

Even then `load`

is insane. To retrieve the contents of `m`

you need to know its name. Example:

```
x = 10;
save('test.mat', 'x');
m = load('test.mat');
disp(m.x);
10
```

It’s best to write a wrapper for `load`

and `save`

so that `load2('test.mat')`

returns `10`

instead of `m`

.

## Numeric Precision¶

Matlab “downgrades” numeric precision to the lowest common denominator in calculations.

```
x=ones([1,1], 'uint8'); y = 1.2345;
>> z=x/y;
>> disp(z)
1
>> class(z)
ans =
uint8
```

One solution: convert everything to `double`

as soon as you load it.

Always check that intermediate results are still `double`

(using validateattributes).