to delete some rows frm cell

1 view (last 30 days)
Muhammad
Muhammad on 29 May 2021
Edited: Jan on 29 May 2021
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

Answers (1)

Jan
Jan on 29 May 2021
Edited: Jan on 29 May 2021
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, :) = [];

Categories

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!