2D logical indexing of 1D array for resulting 2D array

5 views (last 30 days)
I am trying to extract the values of a 1D cell array based on a 2D logical array. Something like this:
A = {'A';
'B';
'C'};
ind = logical([1, 1; 0 0; 0 1]);
B = {'A', 'A';
[], [];
[], 'C'};
Unfortunately it's not as simple as
B = A(ind)
but I can't think of a way to do it without a cumbersome loop.

Accepted Answer

Jan
Jan on 22 Jan 2021
Edited: Jan on 22 Jan 2021
A = {'A';
'B';
'C'};
ind = logical([1, 1; 0 0; 0 1]);
indD = double(ind) .* (1:numel(A)).'; % Auto-expand, >= R2016b
B = cell(size(ind));
B(ind) = A(indD(ind))

More Answers (0)

Products


Release

R2020b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!