Error using for loop to delete empty cell array elements
2 views (last 30 days)
Show older comments
I want to completely delete the null elements of routes_log cell array. I use the following code.
temp_routes_log=routes_log
for i=1:numel(temp_routes_log)
if (isempty(temp_routes_log{i})==1)
routes_log(i)=[]
end
end
%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
routes_log(i)=[]
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.
0 Comments
Accepted Answer
per isakson
on 31 Oct 2021
Edited: per isakson
on 31 Oct 2021
Replace
for i=1:numel(temp_routes_log)
by
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;
end
end
routes_log(to_be_deleted) = [];
Caveat: not tested
More Answers (0)
See Also
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!