计算Matlab中结构字段中具有特定值的元素数

时间:2021-05-06 08:05:45

标签: matlab count structure field

我有一个包含多个字段的结构 myS,其中包括 myField,后者又包含其他几个字段,例如 BB。我需要计算 *'R_value' 在 BB 中出现的次数。

我试过: sum(myS.myField.BB = 'R_value')

还有这个:

count = 0;
for i = 1:numel(myS.myField)
    number_of_element = numel(myS.myField(i).BB)=='R_value'
    count = count+number_of_element;
end

但它不起作用。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

如果您只是检查 BB 是否是那个文字字符串,那么您的循环就是:

count = 0;
for i = 1:numel(myS.myField)
    count = count+strcmp(myS.myField(i).BB,'R_value') 
end

numel 计算元素的数量。零是一个元素。错误也是如此。只需对数组求和即可。

count = 0;
for i = 1:numel(myS.myField)
    number_of_element = sum(myS.myField(i).BB==R_value) 
    count = count+number_of_element;
end

另请注意,您的括号有误,因此您需要计算总共有多少 BB,然后将该数字与 R_value 进行比较。我假设 R_value 是一个数字。

例如:

myS.myField(1).BB=[1 2 3 4 1 1 1]
myS.myField(2).BB=[4 5 65 1]
R_value=1
相关问题