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).