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

7 visualizzazioni (ultimi 30 giorni)
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.

Risposta accettata

Jan
Jan il 22 Gen 2021
Modificato: Jan il 22 Gen 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))

Più risposte (0)

Categorie

Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange

Prodotti


Release

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by