2015-05-29 2 views
0

Я новичок в MATLAB и очень ценю вашу помощь. У меня есть структура «s» и внутри «s» У меня есть поля, один из которых «t» для проб и внутри «t». У меня есть почти 20 других полей, и все они имеют значения, записанные в 1xn-матрицах. У меня почти 900 испытаний и вы хотите выбрать конкретные, основанные на значениях поля A внутри каждого испытания (s.t.A). как я могу это сделать? Я немного потерял, что я не могу даже понять, что я должен искать. Спасибо.Выбор определенных полей в структурном массиве на основе значений поля.

+1

Не могли бы вы дать краткий пример вашего вопроса, с помощью ввода и результата. Я предполагаю, что вы просто хотите индексировать, что можно легко сделать, посмотрев ваши данные. Предположим, что S - 4 измерения. Вы можете попробовать s (:, t, 1, :) set t = 1 и посмотреть, что вы получаете – GameOfThrows

+0

его a <1x1 struct> «s», который содержит поле с именем «t», которое <1x900 struct>. t имеет 900 ячеек, и каждая ячейка содержит все данные под разными именами полей, например «направление», которое представляет собой вектор [a a a ...] с переменной длиной для каждого испытания «t». значение a равно либо 0, либо 180. Я хочу сгруппировать или выбрать все испытания «t», которые имеют значение 180 для направления. Большое спасибо –

+0

Хорошо, я вижу, вы можете выбирать ячейки, используя фигурные скобки {, индексирование должно быть таким же, как в матрицах. – GameOfThrows

ответ

0

Непонятно, каковы ваши переменные на самом деле, и это имеет большое значение для того, как вы можете действовать на них. Например, вы можете посмотреть на structfun для своей проблемы - это позволяет применить функцию к каждому полю структуры, но она должна быть скалярной, например. structfun(@(x) x==180,s.t) вернет результат ==180 для каждого поля t.

Если ваша структура не является скалярной, вы можете попробовать логическое индексирование, например. [s.t([s.t.direction]==180)] вернет структуру, в которой было выполнено условие direction == 180.

Если вы указали фактическую переменную, с которой работаете, тогда вы, вероятно, получите более полезные ответы.

+0

данные выглядят примерно так: DATA = struct ('Направление', {[1,1,1,1], [1,1,2,1], [2,2,2,2,2], [ 2,2,2,2,1,2], [2,2,2,2]}, 'Trial', { 'правильно', 'неправильно', 'неправильно', 'правильно', 'правильно'}) ; ** это просто пример, и у меня есть и другие поля ** , так что я просто хочу работать с ячейками в моей структуре, которые имеют Trial как «правильный», и я хотел бы хранить их в отдельном struct вместе с их соответствующим направлением для этой ячейки. Я не уверен, ясно ли я, или нет, я прошу прощения за это. –

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