Delete specific rows from a cell array

14 views (last 30 days)
Hello everyone, i have a cell array just like this:
value Class
1200 'Unknown - State'
1700 'Rest'
1600 'Unknown - State'
2100 'City'
How i'm going to remove the rows whose class is 'Unknown-State' so my result cell array woulb be like this:
Value Class
1700 'Rest'
2100 'City'

Accepted Answer

the cyclist
the cyclist on 14 Dec 2014
Assuming your cell array is name "C", then
removeIndex = strcmp(C(:,2),'Unknown - State');
C(removeIndex,:) = [];
If you don't know ahead of time that the class is the second column, then you could find the class column number using
classIdx = find(strcmp(C(1,:),'Class'))

More Answers (2)

Azzi Abdelmalek
Azzi Abdelmalek on 14 Dec 2014
a={1200 'Unknown - State'
1700 'Rest'
1600 'Unknown - State'
2100 'City'}
b=a(~ismember(a(:,2),'Unknown - State'),:)
  3 Comments
Muhammad Usman Saleem
Muhammad Usman Saleem on 5 Nov 2017
@Azzi
Is this possible we delete row 'Unknow-State' and 'city simultaneously in a single line?
Stephen23
Stephen23 on 5 Nov 2017
Edited: Stephen23 on 5 Nov 2017
@Muhammad Usman Saleem: like this?:
>> a(~ismember(a(:,2),{'Unknown - State','City'}),:)
ans =
[1700] 'Rest'

Sign in to comment.


Idan Cohen
Idan Cohen on 1 Apr 2020
Hi,
Almost the same question. I have array like this
X' [mm] Y' [mm] r [mm] Teta [Rad]
0.125 -34.68 34.675225 -1.567191
0.325 -34.68 34.676523 -1.561424
0.525 -34.68 31.678974 -1.555657
0.725 -34.68 34.682578 -1.549891
0.125 -34.48 32.475227 -1.567171
0.325 -34.48 31.476532 -1.561369
0.525 -34.48 34.478997 -1.555569
0.725 -34.48 34.482622 -1.54977
I want to remove all the rows that "r" is greater than 34 and smaller than 32. How can I do that?

Categories

Find more on Elementary Math 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!