delete columns of empty elements of a cell

8 visualizaciones (últimos 30 días)
Alberto Acri
Alberto Acri el 23 de Jun. de 2023
Editada: Mayur el 9 de Jul. de 2023
Hello! I have a cell like this:
empty_elem = [];
A = {'5','11',empty_elem,empty_elem;'99','169','188',empty_elem;'250','258','267',empty_elem};
I want to delete the column consisting of null elements and transform the cell like this:
A = {'5','11',empty_elem;'99','169','188';'250','258','267'};
I would need code that can do this also considering that:
  • It may happen to have multiple null columns (and not just one).
  • Null columns are always found at the end (inside the cell).
I tried this way, but it deletes columns that I don't want to be deleted:
empty_elem = [];
A = {'5','11',empty_elem,empty_elem;'99','169','188',empty_elem;'250','258','267',empty_elem};
A(:, any(cellfun(@isempty, A), 1)) = [];

Respuesta aceptada

Mayur
Mayur el 23 de Jun. de 2023
Editada: Mayur el 9 de Jul. de 2023
Hi Alberto!
I understand that some extra columns are also getting deleted using the above command. You can instead use the following code snippet to achieve the desired functionality:
empty_elem = [];
A = {'5','11',empty_elem,empty_elem;'99','169','188',empty_elem;'250','258','267',empty_elem};
A(:, all(cellfun(@isempty, A), 1)) = [];
disp(A);
{'5' } {'11' } {0×0 double} {'99' } {'169'} {'188' } {'250'} {'258'} {'267' }
Using any deletes a column having at least one null value, whereas using all deletes those columns having all the values as null.
You can read more about all here: https://in.mathworks.com/help/matlab/ref/all.html

Más respuestas (0)

Categorías

Más información sobre Operators and Elementary Operations en Help Center y File Exchange.

Productos


Versión

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by