Arrays 倍频程:如何对单元数组进行逻辑索引
在八度音阶中,我有一个单元Arrays 倍频程:如何对单元数组进行逻辑索引,arrays,indexing,cell,octave,Arrays,Indexing,Cell,Octave,在八度音阶中,我有一个单元 a={{1,'abc',3.5}, {2,'abc',4.5},{3,'def',5.4}} 我想做逻辑索引,就像做矩阵一样 差不多 a(:,3} =='abc' 应该产生一系列 [1, 1, 0] 基本上,我想生成一个新的单元数组,它只包含有“abc”的点,所以它应该减少到 b=a={{1,'abc',3.5}, {2,'abc',4.5}} 我该怎么做 a={{1,'abc',3.5}, {2,'abc',4.5},{3,'def',5.4}} arg
a={{1,'abc',3.5}, {2,'abc',4.5},{3,'def',5.4}}
我想做逻辑索引,就像做矩阵一样
差不多
a(:,3} =='abc'
应该产生一系列
[1, 1, 0]
基本上,我想生成一个新的单元数组,它只包含有“abc”的点,所以它应该减少到
b=a={{1,'abc',3.5}, {2,'abc',4.5}}
我该怎么做
a={{1,'abc',3.5}, {2,'abc',4.5},{3,'def',5.4}}
arg = 'abc'
res = cellfun(@(x) ismember(1, strcmp(x, arg)), a)
cellfun将给定函数应用于单元格数组的每个元素:
正如第一个链接所指出的,“@(x)创建一个匿名函数”
这篇文章展示了如何在混合类型的单元格数组中查找字符串:
在本例中,给定单元格数组的一个元素是单元格数组本身,因此x将保存该元素
x是{1,'abc',3.5}->strcmp(x,arg)是{0,1,0}->ismember(1,{0,1,0})计算为1
x是{2,'abc',4.5}->strcmp(x,arg)是{0,1,0}->ismember(1,{0,1,0})计算为1
x是{3,'def',5.4}->strcmp(x,arg)是{0,0,0}->ismember(1,{0,0,0})计算为0
所以res包含{1,1,0}