У меня сложилось впечатление, что структура в matlab аналогична таблицам запросов в sql, но у меня есть ощущение, что я могу ошибаться.
У меня довольно большой набор данных, состоящий из множества записей и множества полей.В идеале я хочу индексировать структуру, извлекая только те данные, которые мне интересны. Вот пример набора данных
Cond Type Stime ETime
2 10 1 900
2 10 1 900
2 10 1 900
3 1 901 1800
3 1 901 1800
4 1 1801 2700
8 1 901 1800
8 1 901 1800
9 1 901 1800
9 1 901 1800
12 1 901 1800
12 1 901 1800
13 10 1 900
13 10 1 900
13 10 1 900
16 1 901 1800
16 1 901 1800
17 10 1 900
17 10 1 900
17 10 1 900
19 10 1 900
19 10 1 900
19 10 1 900
20 10 1 900
20 10 1 900
20 10 1 900
22 1 901 1800
22 1 901 1800
25 10 1 900
25 10 1 900
25 10 1 900
27 1 901 1800
27 1 901 1800
28 1 901 1800
28 1 901 1800
30 1 1801 2700
31 1 901 1800
31 1 901 1800
32 10 1 900
32 10 1 900
32 10 1 900
35 10 1 900
35 10 1 900
35 10 1 900
Что я хочу сделать, это получить конкретные записи данных для примера анализа, который я хочувсе записи, где Type
равен 10 или я хочу, чтобы все Cond
из 1:20 имели ETime
== 900.
. Я могу сделать это следующим образом:
idx = find([stats.Type] == 10);
[stats(idx).Stime]
но для нескольких типов мне нужен цикл for, поскольку при попытке использования вектора выдается ошибка.
idx = find([stats.Type] == 1:10); % Does not work
% must use this
temp = [];
for aa = 1:10
idx = find([stats.Type] == aa);
temp = horzcat(idx,temp);
end
[stats(temp).Stime]
Это неправильный способ использования структур?Существует ли более простой способ индексации структуры для извлечения данных, представляющих интерес?