Undefined operator '==' for input arguments of type 'cell'.

53 views (last 30 days)
load hospital
hospital.Properties.ObsNames(1:10)
dsMale = hospital(hospital.Sex=='Male',:);
dsMale(1:10,{'LastName','Sex'})
this above code is present in matlab documentation this work well....
where as i tried in different dataset....
[~,~, AllData] =xlsread('play.xls','Sheet1','A1:E15');
student = cell2dataset(AllData);
ds1=student(student.class=='first',:) % i need to store in another dataset student details who's class is first
i get an error...Undefined operator '==' for input arguments of type 'cell'.

Accepted Answer

Guillaume
Guillaume on 26 Jun 2019
Use strcmp to compare a cell array of char vectors to another char vector:
ds1 = student(strcmp(student.class, 'first'), :)
  4 Comments
Guillaume
Guillaume on 26 Jun 2019
Sure, but as said for char arrays you can't use ==, you have to use strcmp, so:
student(strcmp(student.class, 'first') & student.mark >= 80, :)
If there is only a few different values in class, you could convert it to categorical, which uses == for comparison:
student.class = categorical(student.class); %only needed once after loading the table
%...
student(student.class == 'first' & student.mark >= 80, :) %class is categorical so can use ==
Alternatively, you can compare to a string (using "" instead of ''). strings also use == for comparison.
%optional, convert cell array of char vectors to string array
%student.class = string(student.class);
student(student.class == "first" & student.mark >= 80, :) %string comparison. can use ==
UMA RAMASAMY
UMA RAMASAMY on 26 Jun 2019
thank you...thank you...thank you... for your great explanation and code. it works like a charm.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!