cell array to logical

131 visualizzazioni (ultimi 30 giorni)
Ioannis Vourvachakis
Ioannis Vourvachakis il 11 Ott 2021
Modificato: DGM il 11 Ott 2021
I have this cell array and i want to convert this to logical array.
Thank you
  1 Commento
stozaki
stozaki il 11 Ott 2021
Do you treat null values (empty: []) as "false"?

Accedi per commentare.

Risposte (1)

DGM
DGM il 11 Ott 2021
Modificato: DGM il 11 Ott 2021
In order to make a logical array of it, you'll have to specify the conditions where the output is true. Consider two examples:
A = {1; 1; 1; []; 1; 1; []; 0; 0.1}
A = 9×1 cell array
{[ 1]} {[ 1]} {[ 1]} {0×0 double} {[ 1]} {[ 1]} {0×0 double} {[ 0]} {[ 0.1000]}
% true if non-empty
B = ~cellfun(@isempty,A)
B = 9×1 logical array
1 1 1 0 1 1 0 1 1
% true if nonzero
C = cellfun(@(x) x~=0,A,'uniform',false)
C = 9×1 cell array
{[ 1]} {[ 1]} {[ 1]} {0×0 logical} {[ 1]} {[ 1]} {0×0 logical} {[ 0]} {[ 1]}
% true if non-empty and nonzero
D = cellfun(@(x) ~isempty(x) && x~=0,A)
D = 9×1 logical array
1 1 1 0 1 1 0 0 1
Note that the second example is still a cell array. This is required if empty elements are to be preserved,.
  2 Commenti
Jan
Jan il 11 Ott 2021
When the elements of the cell array are numerical arrays, this is faster:
B = ~cellfun('isempty', A)
Ioannis Vourvachakis
Ioannis Vourvachakis il 11 Ott 2021
Thank you very much!!

Accedi per commentare.

Categorie

Scopri di più su Cell Arrays in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by