Error using for loop to delete empty cell array elements
조회 수: 3 (최근 30일)
이전 댓글 표시
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
채택된 답변
per isakson
2021년 10월 31일
편집: per isakson
2021년 10월 31일
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
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!