计算结构中字符串的出现次数

时间:2018-02-24 16:02:54

标签: string matlab count

我有一个结构mydata,我需要访问其中一个字段mydata.myfield,并在该字段中访问另一个字段mydata.myfield.mysecondfield。在最后一个字段mydata.myfield.mysecondfield中,我需要检查特定字符串('apple')出现的次数。

我尝试过:

 aaa=unique(mydata.myfield.mysecondfield,'apple')
 bbb=cellfun(@(x) sum(ismember(mydata.myfield.mysecondfield,x)),aaa,'un',0)

但我收到此错误:Attempt to reference field of non-structure array.

结构包含具有字符串和数值的字段。

1 个答案:

答案 0 :(得分:0)

潜在的问题可能是由于结构与您描述它的方式略有不同。根据您的问题,我按如下方式创建了它:

mydata = struct();
mydata.myfield.mysecondfield = {'apple' 'apple' 'orange' 'banana' 'apple' 'kiwi'};

由于我没有得到同样的错误,我认为基础类型可能略有不匹配。无论如何,如果上面定义了mydata,如果您按如下方式更改代码,它应该可以工作,但它将返回字段中每个唯一匹配项的计数:

aaa = unique(mydata.myfield.mysecondfield);
bbb = cellfun(@(x) sum(ismember(mydata.myfield.mysecondfield,x)),aaa,'un',0)

bbb =
      4×1 cell array
      [3]
      [1]
      [1]
      [1]

如果您只想计算apple次出现的次数,则应使用以下方法:

apple_count = sum(strcmp(mydata.myfield.mysecondfield,'apple')); % 3