Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 在单元格数组中查找给定内容的列索引_Matlab_Matrix_Vector_Cell Array - Fatal编程技术网

Matlab 在单元格数组中查找给定内容的列索引

Matlab 在单元格数组中查找给定内容的列索引,matlab,matrix,vector,cell-array,Matlab,Matrix,Vector,Cell Array,我试图弄清楚,在两行单元格数组中给定两行值时,如何获取列索引 我不知道为什么我很难弄明白这一点,因为你可以很容易地找到1列的值 例如,给出下面的单元格数组: {1,1,1,2,2,2;'apple','banana','orange','apple','banana','orange'}.' 我想找到column1=2,column2=“香蕉” 输出应该是5 我该怎么做呢?根据@LuisMendo的说法,我将假设一个单元阵列 cellarray = {1,1,1,2,2,2;'apple','

我试图弄清楚,在两行单元格数组中给定两行值时,如何获取列索引

我不知道为什么我很难弄明白这一点,因为你可以很容易地找到1列的值

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

{1,1,1,2,2,2;'apple','banana','orange','apple','banana','orange'}.'
我想找到column1=
2
,column2=
“香蕉”

输出应该是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
的值。然后它使用查找所有与
'banana'
匹配的项,并将该结果添加到通过value获得的逻辑数组中。最后,它搜索两个实例都为真的位置,即
tmp3
等于
2

哇哦!我的第一个高尔夫球打了一次。59,51字节

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

如果你喜欢
code高尔夫
-

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

这是一个单元格数组,对吗?看起来像是一个一维单元格数组的值。我想你指的是二维矩阵/单元阵列你肯定是指
{1,1,1,2,2;'apple','banana','orange','apple','banana','orange'}.
。请编辑这个问题accordingly@LuisMendo是的,对不起。我指的是单元格数组你可能指的是
values=cell2mat(Cellray(:,1))
。或者
values=[carellay{,1}]
@LuisMendo我确实这么做了。不能用那种方式得到字符串,但是,给了我一个CAT错误是的,字符串需要作为单元格数组保存,因为它们可能有不同的长度。但是strcmp检查单元格的内容,所以您可以使用它来比较字符串的单元格数组和字符串。非常感谢。正是我想要的。@Adriaan我不能运行tmp3=tmp1+tmp2;由于矩阵尺寸不匹配。现在不超过7个字符,几乎没有了@阿德里安,用strcmp替换
ismember
怎么样?我不想用它,因为你用过:)再说一遍,我从来不会用
&
,但总是
&
。可能是因为MATLAB一直告诉我要这样做,可能是因为我喜欢直观地分离两个变量检查它,
strcmp
要求您转置任意一个数组。因此,
strcmp'
是七个字符,
ismember
是八个字符。没有那么大的进步