Matlab:计算具有特定内容的结构数

时间:2012-05-31 13:02:48

标签: arrays matlab struct count

我正在处理Simulink Design Verifier,并希望自己提取一些信息。因此,我想计算目标的数量以及它们中有多少已经满足。

'Objectives'是一个结构本身:Objectives< 1x10 struct>

计算目标数量很容易:

length(fieldnames(Objectives))

'目标'的内容也是结构。每个这样的结构都具有以下内容:

type

status

label

现在我想计算'Objectives'中有多少元素满足属性

'status == Satisfied'

2 个答案:

答案 0 :(得分:4)

假设您有一个结构数组,请使用以下代码:

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

如果你有旧的Matlab版本,你可以使用:

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

答案 1 :(得分:0)

您也可以使用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函数执行不区分大小写的比较。