Cody

Problem 320. Maintain shape of logical-index mask

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

39.23% Correct | 60.77% Incorrect
Last solution submitted on Oct 13, 2019

Problem Comments

Problem Recent Solvers53

Suggested Problems

More from this Author23

Problem Tags