to delete some rows frm cell
조회 수: 4 (최근 30일)
이전 댓글 표시

this is a cell 'names ' in the workspace
i want to delete all the row whose having string data in 2 column
i am doing this by using this code
for ii =1:333
if isempty(names(ii,2))
ii+1;
else
delete(names(ii,2))
ii+1;
end
but it gives error so plz tell me what will be the code for this
my workspace has
names 333*2 cell
댓글 수: 0
답변 (1개)
Jan
2021년 5월 29일
편집: Jan
2021년 5월 29일
Please read the Getting Started chapters of the documentation and study Matlab's Onramp to learn the basics.
Do not increase the loop counter of a for loop manually. This is confusing only,because the loop ignores the changes.
isempty(names(ii,2)) does not, what you expect. names(ii,2) is a cell, which contains an empty char vector, so it is not empty. The contents is empty, so you need the curly braces: names{ii,2}
The delete command does not remove elements from an error, see:
doc delete
If you delete an element of an array, the rest of the array is shifted to the top. Then a loop would overse the following element.
A solution for your problem:
emptyElem = cellfun('isempty', names(:, 2));
names = names(~emptyElem, :);
Or with a loop:
toDelete = false(1, 333);
for ii =1:333
toDelete(ii) = isempty(names{ii,2});
end
names(toDelete, :) = [];
댓글 수: 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!