Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

Problem 320. Maintain shape of logical-index mask

Created by the cyclist

When using logical indexing into an array, MATLAB returns a vector output. For example, if

A = magic(3);
mask = logical([0 1 1; 0 1 1; 0 1 1]);

then

out=A(mask)

returns the output

out =
       1
       5
       9
       6
       7
       2

But when the mask has a block format (as in this example), it is sometimes desirable to maintain that block shape in the output. So, in this case, the desired output would be

out =
       1   6
       5   7
       9   2

In other words, the output is the same shape as the logical index block.

The (first) input array A will be two-dimensional, and the (second) input array mask will be a logical that is guaranteed to have the block characteristic.

Problem Group

Solution Statistics

38 correct solutions 28 incorrect solutions
Last solution submitted on Jun 18, 2014

Problem Comments