MATLAB:在具有混合数据类型的多维单元数组中查找元素的索引

时间:2014-06-02 16:20:34

标签: matlab find cell-array

就像标题所说的那样。如何在matlab单元格数组中找到特定元素的索引?单元格数组的内容包含字符串和数字。

玩具示例:

database = cell(4,2)
database(1,1:2) = {'Song', 'Rating'}
database(2:4,1) = {'Song1'; 'Song2'; 'Song3'}
database(2:4,2) = {1; 2; 5}

functionIWant(database, 'Song2') % Should return [3,1] or something similar

我知道我可以将它转换为矩阵,迭代它,从而找到正确的索引。我想知道是否有更快的方法直接在单元阵列上工作。

2 个答案:

答案 0 :(得分:3)

试试这个 -

[r,c] = find(strcmp(database,'Song2'))

输出 -

r =
     3
c =
     1

答案 1 :(得分:1)

你可以尝试这样的事情:

str='Song2';
Match=cellfun(@(x) strcmp(str, x), database, 'UniformOutput', 0);

获取匹配的索引:

[row, col]=find(cell2mat(Match))

如果你想要第2列的匹配元素,只需执行:

database(row, 2)