Steve on Image Processing

Concepts, algorithms & MATLAB

MATLAB arithmetic expands in R2016b

Posted by Steve Eddins,

Earlier this summer, I was writing some color-space conversion code. At one point in the code, I had a Px3 matrix called RGB, which contained P colors, one per row. I also had a 1x3 vector, v. I needed to multiply each column of RGB by the corresponding element of v, like this:

RGB_c = [RGB(:,1)*v(1)  RGB(:,2)*v(2)  RGB(:,3)*v(3)];

But since I was using an internal developer build of MATLAB R2016 (released on September 14), I didn't type the code above. Instead, I typed this:

RGB_c = RGB .* v;

In R2016a and older MATLAB releases, that line of code produced an error:

>> RGB_c = RGB .* v
Error using  .* 
Matrix dimensions must agree.

In the new release, though, MATLAB implicitly expands the vector v to be the same size as the matrix RGB and then carries out the elementwise multiplication. I say "implicitly" because MATLAB does not actually make an in-memory copy of the expanded vector.

To read all about this change in MATLAB matrix arithmetic, head over to Loren's Art of MATLAB blog and read my guest post about it.


Get the MATLAB code

Published with MATLAB® R2016b

Add A Comment

Your email address will not be published. Required fields are marked *

What is 5 + 7 ?

Preview: hide