我试图找出在给定2行单元格数组中的2行值时如何获取列索引。
我不知道为什么我难以解决这个问题,因为你很容易找到1列值。
例如,给出下面的单元格数组:
{1,1,1,2,2,2;'apple','banana','orange','apple','banana','orange'}.'
我想找到column1 = 2
和column2 = 'banana'
输出应为5。
我该怎么做?
答案 0 :(得分:4)
根据@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
。
Whoohoo!我的第一个高尔夫球衬里。 59,51字节!
find(((([A{:,1}])==1)'+strcmp('banana',A(:,2)))==2)
=
2
答案 1 :(得分:1)
如果您进入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