Return the number of rows of an array of cell data

20 ビュー (過去 30 日間)
charles atlas
charles atlas 2011 年 12 月 8 日
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.

採用された回答

Sven
Sven 2011 年 12 月 8 日
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 件のコメント
charles atlas
charles atlas 2011 年 12 月 8 日
That strcmp function worked perfectly, Thanks.
I can't believe there was such a simple solution to this problem.

サインインしてコメントする。

その他の回答 (2 件)

Paulo Silva
Paulo Silva 2011 年 12 月 8 日
doc cellfun

Walter Roberson
Walter Roberson 2011 年 12 月 8 日
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));

タグ

製品

Community Treasure Hunt

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

Start Hunting!

Translated by