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

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.

 Réponse acceptée

Jan
Jan le 22 Jan 2021
Modifié(e) : Jan le 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))

Plus de réponses (0)

Catégories

Produits

Version

R2020b

Question posée :

le 22 Jan 2021

Modifié(e) :

Jan
le 22 Jan 2021

Community Treasure Hunt

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

Start Hunting!

Translated by