Clear Filters
Clear Filters

Error using for loop to delete empty cell array elements

3 views (last 30 days)
I want to completely delete the null elements of routes_log cell array. I use the following code.
for i=1:numel(temp_routes_log)
if (isempty(temp_routes_log{i})==1)
%routes_log can be like {0×0 double} {1×3 double} and I want to
% completely remove the {0×0 double} and make routes_log as just {1×3 double}
But I get error in the case when (for e.g.) 5th entry is null in temp_routes_log but as I am deleting the routes_log elements, the routes_log is no more containing 5 elements and it throws an error at
I also tried storing the indices i and then deleting those routes_log elements directly but I some other error was coming. Please guide on how can I achieve the deletion.

Accepted Answer

per isakson
per isakson on 31 Oct 2021
Edited: per isakson on 31 Oct 2021
for i=1:numel(temp_routes_log)
for i = numel(temp_routes_log) : -1 : 1 % loop from last to first element
OR if routes_log is large and speed becomes an issue
to_be_deleted = false(1,numel(routes_log))
for i=1:numel(temp_routes_log)
if isempty(temp_routes_log{i})
to_be_deleted(i) = true;
routes_log(to_be_deleted) = [];
Caveat: not tested
  1 Comment
Jaya on 31 Oct 2021
Edited: Jaya on 15 Nov 2021
For now, routes_log is not so big. So, I used the first solution. Thanks.
Update: The second method works too! I later encountered large sized routes_log & revisited this solution to try the second way.

Sign in to comment.

More Answers (0)


Find more on Loops and Conditional Statements in Help Center and File Exchange


Community Treasure Hunt

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

Start Hunting!