43 views (last 30 days)
Cristina on 15 Jun 2012
Edited: Image Analyst on 20 Mar 2022
I used [Num,Txt,Raw]=xlsread to import a matrix containing both numerical and text data and Raw is a 2000*8 cell. When I try to compute eg mean(Raw(.,7)) the following message appears:
??? Undefined function or method 'sum' for input arguments of type 'cell'.
Error in ==> mean at 29 y = sum(x)/size(x,dim);
How can I convert cel into num values?
Cristina on 15 Jun 2012
Because I have to make computations conditional to a list of variables.... e.g. Raw contains a colums country, rating... and I have to compute let's say the mean only if country=IT and rating=BBB. So I need both numerical and text data...

Sign in to comment.

Answers (4)

Kye Taylor
Kye Taylor on 15 Jun 2012
To convert cell to matrix use the cell2mat functions. For example,

Andrei Bobrov
Andrei Bobrov on 15 Jun 2012
sum for arguments of type double
  1 Comment
Cristina on 15 Jun 2012
ok but this is not a conditional mean...I need to compute the mean if eg country='IT'

Sign in to comment.

Peter Perkins
Peter Perkins on 15 Jun 2012
Cristina, if you have access to the Statistics Toolbox, you might find that using a dataset array is helpful the kind of thing you seem to be describing. You can read a spreadsheet into a dataset array, and then, for example, compute the mean of one variable conditional on values of other numeric or non-numeric variables.
This example on the File Exchange
seems more or less the kind of thing you are describing.

Syed Zubair shah
Syed Zubair shah on 20 Mar 2022
what does it means of Num , txt , Raw ... can we just assign it by T =xlsread(filename) ... if yes then how we call specific column then like F is a column of 1600 rows ?
[Num,Txt,Raw] = xlsread(filename)
  1 Comment
Image Analyst
Image Analyst on 20 Mar 2022
Edited: Image Analyst on 20 Mar 2022
[Num,Txt,Raw] = xlsread(filename, sheetName, 'F1:F1600');

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!