【问题标题】:Matlab - vectorized way to indices in cell array equal stringMatlab - 单元格数组中索引的矢量化方式等于字符串
【发布时间】:2013-10-29 03:28:32
【问题描述】:

我有一个 435x1 元胞数组,其元素是“y”、“n”或“?”。我想找出哪些索引等于'y'。

对于普通数组,我只使用 find 函数。但我不能将它与单元格数组一起使用,因为没有为单元格类型定义 eq。

我想我可以遍历每个元素并做

for index=1:size(cell_array,1)
    if cell_array{index} == 'y'
        %add index to some array of indices
    end
end

但是有没有一种矢量化的方式来遍历数组并找到包含等于“y”的元素的索引?任何帮助表示赞赏。

【问题讨论】:

  • @EitanT - 我认为 Sterling 对 [cell_array{:}]=='y' 位最感兴趣,这不是其他问题的可能解决方案,因此 find 可以以熟悉的方式与 eq 一起使用.我承认,它在功能上大致相同。

标签: arrays matlab vectorization cell-array


【解决方案1】:

由于您知道每个单元格将包含一个字符,因此您可以连接所有单元格元素并进行单个矢量化测试:

find([cell_array{:}]=='y')

可能最直接的方法就是使用strcmp,它可以接受一个元胞数组作为第二个参数:

find(strcmp('y',cell_array))

【讨论】:

  • 更准确地说,您需要find(strcmp('y',cell_array)),以便获得“y”值的索引。
  • 谢谢,我会澄清你需要find 周围的strcmp
  • +1 第二种方法更通用,因为它不需要单字符字符串
猜你喜欢
  • 2015-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多