Cody

Problem 320. Maintain shape of logical-index mask

Created by the cyclist in Community

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.

Solution Stats

41.0% Correct | 59.0% Incorrect
Last solution submitted on Jun 26, 2019

Problem Comments

Recent Solvers53

Suggested Problems

More from this Author23