Return the number of rows of an array of cell data
5 次查看(过去 30 天)
显示 更早的评论
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.
0 个评论
采纳的回答
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));
更多回答(2 个)
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));
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!