Matlab 在单元格数组中查找给定内容的列索引
我试图弄清楚,在两行单元格数组中给定两行值时,如何获取列索引 我不知道为什么我很难弄明白这一点,因为你可以很容易地找到1列的值 例如,给出下面的单元格数组: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,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
是八个字符。没有那么大的进步