2012-05-31 3 views
1

Я имею дело с Simulink Design Verifier и хочу извлечь некоторую информацию самостоятельно. Поэтому я хочу подсчитать количество Целей и сколько их было выполнено.Matlab: подсчитайте количество структур, которые имеют конкретный контент

«Цели» является сама структура: Цели < 1x10 структура>

Подсчет количества целей легко:

length(fieldnames(Objectives)) 

Содержание «Цели» также Структуры. Каждая такая структура имеет следующее содержание:

type 

status 

label 

Теперь я хочу, чтобы подсчитать, сколько элементов в «Задача» удовлетворяет свойство

'status == Satisfied' 

ответ

4

Если предположить, что у вас есть массив структур, используйте следующий код :

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

Если у вас есть старые версии Matlab, вы можете использовать:

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

Решила проблему. Большое спасибо. – derMax

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.

Смежные вопросы