Структура данных:
У меня есть массив struct s
с несколькими полями s.x
, s.y
и s.z
.Обратите внимание на следующие свойства структуры struct!:
(1) Поля в одной строке имеют одинаковые векторы одинакового размера:
length(s(i).x)=length(s(i).y)=length(s(i).z)
(2) Одиночные векторы в полях могут различаться вразмер в строках:
length(s(i).x)~=length(s(j).x)
length(s(i).y)~=length(s(j).y)
length(s(i).z)~=length(s(j).z)
Проблема:
Я хотел бы создать логическую маску на основе одного из полей, например, s.z
, и применить ее ко всей структуремассив.Один из способов - сделать следующее:
mask = [s.z] > 0;
s_concatenated = [s.x; s.y; s.z]';
mask_applied2struct = s_concatenated(mask);
Теперь у меня вопрос: есть ли способ применить логическую маску к типу данных структуры в Matlab? Возможно, в следующем режиме,Например:
mask_applied2struct = s([s.z] > 0)
или
mask_applied2struct = [s]([s.z] > 0)
Итак, в основном меня интересует мгновенный способ объединения структуры и применения к ней маски.
Спасибо зазаранее!