Return the number of rows of an array of cell data

5 visualizaciones (últimos 30 días)
charles atlas
charles atlas el 8 de Dic. de 2011
I have an array of cell data “a” in Matlab. I want to look at the array (which contains numeric and text data) and say in Matlab speak: Find what row of “a” says: ‘Temp Height (density)’.
The Code will return b=1326; I was thinking something like:
[row,col] = find(a, {Temp Height (density)});
This will then give me the value row=1326 which is what I need. I tried to use the find function but it doesnt seem to work becasue it tells me: Undefined function or method 'find' for input arguments of type 'cell'.
Help on this is much appreciated.

Respuesta aceptada

Sven
Sven el 8 de Dic. de 2011
If your cell contains strings (and not numeric data), just use strcmp:
[row,col] = find(strcmp('Temp Height (density)', a));
If some elements of your cell are numeric, the above will fail ( UPDATE: Actually, the above works fine even for non-char elements... I'll leave the rest of my answer for reference). Another method uses the cell function below:
[row,col] = find(cellfun(@(c)ischar(c)&&strcmp('Temp Height (density)',c),a))
or do it in two steps:
strInds = find(cellfun(@ischar, a));
matchMask = strcmp('Temp Height (density)'), a(strInds));
[row,col] = ind2sub(size(a), strInds(matchMask));
  1 comentario
charles atlas
charles atlas el 8 de Dic. de 2011
That strcmp function worked perfectly, Thanks.
I can't believe there was such a simple solution to this problem.

Iniciar sesión para comentar.

Más respuestas (2)

Paulo Silva
Paulo Silva el 8 de Dic. de 2011

Walter Roberson
Walter Roberson el 8 de Dic. de 2011
Is the text to appear anywhere in the row of the cell array (i.e., text might be intermixed without any order), or is it to appear in a very specific column (e.g., column 3) of the cell array, or is it to appear in any of several known columns?
Is the text a substring of the text that is there? A leading substring? A trailing substring? Always the complete string?
If it is a very specific column, say 3, and forms the whole of the column, then
[tf, rowidx] = ismember(Temp Height (density), a(:,3));

Categorías

Más información sobre Characters and Strings en Help Center y File Exchange.

Etiquetas

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by