MATLAB: Error using .* Matrix dimensions must agree.

errorerror using *MATLABmatrixmatrix dimensions must agree

I worked on a machine at my Uni and wrote a code. It had a very long equation, consists of plenty of single value variables, except for 2. One was 1×15,000, the other was 2×1. The code worked perfectly providing me a 2×15,000 array as predicted. Then I went home and tried the code on my machine, ran the code (without any changes) and got the: "Error using .* Matrix dimensions must agree.".
So I decided to check the problem on a much simpler calculation, so I entered:
x=[1 2];
y=[3;4];
z=x.*y
I got the same error again:
Error using .*
Matrix dimensions must agree.
Error in Test (line 3)
z=x.*y
Clearly, the result I should've gotten is this:
z =
3 6
4 8
So I suspect something is off with my MATLAB version. Maybe something in my MATLAB's preferences could be causing this to fail?

Best Answer

You may have to use the bsxfun (link) function to make it work on both machines without encountering compatibility problems. In R2016b (if I remember correctly) ‘implicit expansion’ became the default, so operations that previously required bsxfun would then work without it. So I suspect your machine is running R2016a or earlier, and the uni machine is running R2016b or later.
This bsxfun call:
x=[1 2];
y=[3;4];
z = bsxfun(@times, x, y)
z =
3 6
4 8
will give you the result you expect.