2015-02-20 2 views
0

У меня есть вектор S структур s, каждая из которых имеет поле x.MATLAB векторизация: извлечение вектора структурных полей из вектора структур

Я хотел бы извлечь вектор X, содержащий значение x из каждой структуры в S.

Есть ли способ сделать это с помощью векторизации?

Пример:

s1.x = 42; 
s2.x = 87; 
s3.x = 24; 

S = [s1, s2, s3]; 

Я хочу получить:

X = [42, 87, 24] 
+1

Что-то вроде 'X = [S.x]'? –

+0

@ Benoit_11 Brilliant, пожалуйста, отправьте его в качестве ответа, чтобы я мог его принять. Я попробовал 'S.x', но не имел заключенных квадратных скобок. – MGA

+0

Хорошо, хаха рад, что сработало! Я добавлю немного больше деталей :) –

ответ

2

Вы можете использовать квадратные скобки для конкатенации содержимого поля x структуры следующим образом:

X = [S.x] 

, который помещает все данные, связанные с полем x, в единый массив.

Вы также можете использовать функцию cat конкатенировать по горизонтали:

X = cat(2,S.x) 
+0

Я собираюсь быть нахальным и спросить, знаете ли вы, как сделать обратное, то есть с учетом 'X', установить все' s.x' в 'S' соответственно. Я попробовал '[S.x] = X', но я получаю« слишком много выходных аргументов ». – MGA

+0

Я думаю, что функция 'deal' - это то, что вам нужно:' S.x = deal (X) '. Это так? –

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