MATLAB:计数具有特定内容结构的数(Matlab: Count number of struct

2019-10-16 18:57发布

我负责的Simulink设计验证,并想提取我自己的一些信息。 因此,我要算目标的数量,以及他们多少都得到满足。

“目标”是一个结构本身:目的<1×10结构>

计数的目标数是很容易:

length(fieldnames(Objectives))

“目标”的内容也是结构。 每个这样的结构有下面的内容:

type

status

label

现在我要统计有多少元素在“目标”满足上述特性

'status == Satisfied'

Answer 1:

假设你有结构的数组,可以使用下面的代码:

 nnz(strcmp({Objectives.status},'satisfied'))

如果你有旧matlab版,您可以使用:

 nnz(strmatch('satisfied',{Objectives.status},'exact'))


Answer 2:

你也可以使用ISMEMBER。 例:

%# lets create a sample array-of-structs
v = cellstr( num2str(rand(10,1)>0.5, 'Value %d') );
s = struct('value',v);

%# count number of structs satistying a condition
num = sum( ismember(lower({s.value}), 'value 0') )

注意我如何使用LOWER函数进行区分大小写的比较。



文章来源: Matlab: Count number of structs that have a specific content