我有一个结构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.
结构包含具有字符串和数值的字段。
答案 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