【问题标题】:Find string (from table) in cell in matlab在matlab的单元格中查找字符串(从表中)
【发布时间】:2015-03-18 08:43:39
【问题描述】:

我想在单元格内找到一个字符串(我从表格中获取)的位置: A 是我的表格,B 是单元格。

我已经测试过了:

strncmp(A(1,8),B(:,1),1)

但它找不到位置。 我已经测试了许多命令,例如: ismember,strmatch,find(strcmp),find(strcmpi)find(ismember),strfind 等等......但它们都给我错误主要是因为我的数据类型!

所以请给我一个解决方案。

【问题讨论】:

  • @BrianTompsett 如果您打算在 rambo 刻录工作中大量编辑问题(您经常这样做),我建议使用 a local variant of the meta post with huge support 而不是 MSE 上已关闭多年的帖子几票。
  • @AndrasDeak 感谢您让我注意到另一个元帖子。

标签: string matlab find cell


【解决方案1】:

来自 Mathworks 论坛的修改解决方案,适用于带有不规则字符串的单列表

find(strcmp('mystring',mytable{:,:}))

会给你行号。

【讨论】:

    【解决方案2】:

    Luis Mendo 的回答绝对正确,但我想补充一些一般信息。

    您的问题是您尝试的所有函数(strfind,...)仅适用于普通字符串,但不适用于元胞数组。在代码 sn-p 中索引 AB 的方式仍然是一个单元格数组(维度为 (1,1))。您需要使用大括号 {} 来“摆脱”元胞数组并获取包含字符串。 Luis Mendo 展示了如何做到这一点。

    【讨论】:

      【解决方案3】:

      你想要strfind:

      >> strfind('0123abcdefgcde', 'cde')
      ans =
           7    12
      

      如果A 是表格,B 是元胞数组,则需要这样索引:

      strfind(B{1}, A.VarName{1});
      

      例如:

      >> A = cell2table({'cde'},'VariableNames',{'VarName'}); %// create A as table
      >> B = {'0123abcdefgcde'}; %// create B as cell array of strings
      >> strfind(B{1}, A.VarName{1})
      ans =
           7    12
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-22
        • 2014-03-27
        • 2018-07-15
        • 2019-05-24
        • 2012-06-09
        • 2012-12-01
        • 2014-01-16
        • 1970-01-01
        相关资源
        最近更新 更多