根据元胞数组中的内容查找列索引

Finding the column index given the contents in a cell array

我正在尝试找出在给定 2 行元胞数组中的 2 行值时如何获取列索引。

我不知道为什么我很难弄清楚这一点,因为您可以很容易地找到 1 列值。

例如,给出下面的元胞数组:

{1,1,1,2,2,2;'apple','banana','orange','apple','banana','orange'}.'

我想找到第 1 列 = 2 和第 2 列 = 'banana'

的位置

输出应该是 5。

我该怎么做?

根据@LuisMendo

,我将假设一个元胞数组
cellarray = {1,1,1,2,2,2;'apple','banana','orange','apple','banana','orange'}.';
values = cell2mat(cellarray(:,1));
tmp1 = values == 1;
tmp2 = strcmp('banana', cellarray(:,2));
tmp3 = tmp1+tmp2;
result = find(tmp3 == 2);

这将从元胞数组中获取值,然后搜索等于 1 的所有值。然后它使用 strcmp 查找所有与 'banana' 匹配的项,并将该结果添加到按值获得的逻辑数组中。最后它搜索两个实例都为真的地方,即 tmp3 等于 2.

哇哦!我第一次打高尔夫球。 59、51字节!

find(((([A{:,1}])==1)'+strcmp('banana',A(:,2)))==2)
 =
         2

如果您喜欢 code-golfing -

find([A{1,:}]==2 & ismember(A(2,:),'banana'))

样本运行-

>> A
A = 
    [    1]    [     1]    [     1]    [    2]    [     2]    [     2]
    'apple'    'banana'    'orange'    'apple'    'banana'    'orange'
>> find([A{1,:}]==2 & ismember(A(2,:),'banana'))
ans =
     5