Matlab - 按其值查找单元格的索引

时间:2014-11-03 17:44:03

标签: string matlab strcmp cell-array

我有一个单元格数组的字段11x1,其中每个单元格都是一个字符串,我想得到的单元格索引等于字符串名称。

我找到了这个例子:

C = { {'a'}, {'b'}, {'c'}, {'a'}, {'a'} } % data
idx = find(strcmp([C{:}], 'a')) % single line engine

然而,当我将它应用于我的案例时:

find(strcmp([fieldNames{:}], 'b_h_epsQ_h'))

没有任何事情发生,并且strcmp([fieldNames {:}],'b_h_epsQ_h')本身找不到匹配,尽管如果我键入strcmp([fieldNames {2}],'b_h_epsQ_h')答案是1。

我试图转换单元格数组,例如1x5仍未成功

3 个答案:

答案 0 :(得分:0)

使用以下内容:

idx = strcmp(fieldNames, 'b_h_epsQ_h')
find(idx)

实施例

>> fieldNames = {'a', 'b', 'c', 'd', 'e'};
>> idx = strcmp(fieldNames, 'c')
idx =
     0     0     1     0     0
>> find(idx)
ans =
     3

答案 1 :(得分:0)

您也可以尝试:

idx = cellfun(@(x)strcmp(x,'c'), C);

答案 2 :(得分:0)

试试这个:

index = zeros(1,length(fieldNames))
for i = i:length(fieldNames)
    if find(strcmp([fieldNames{:}], 'b_h_epsQ_h')) == 1
        index[i] = 1
    end
end

如果你想在找到匹配的字符串后立即退出,请在'index = i'之后的'if'子句中抛出'break'。