2011-12-25 4 views
6

Как я могу извлечь определенное поле из каждого элемента массива структуры Matlab?Как отрезать массив структур?

>> clear x 
>> x(1).a = 6; 
>> x(2).a = 7; 

Я хотел бы массив, содержащий 6 и 7. Ни x(:).a, ни x.a делать то, что я хочу.

>> x(:).a 

ans =  

    6 


ans = 

    7 

ответ

9

Нет проблем - просто использовать:

arr = [x.a]; 

Это Concat все значения, которые вам нужны. Если у вас есть более сложные данные, вы можете использовать фигурные наручи:

b(1).x = 'John'; 
b(2).x = 'Doe'; 
arr = {b.x}; 
0

К сожалению, я почти уверен, что у MATLAB нет хорошего способа делать то, что вы хотите. Вам придется либо использовать цикл for, чтобы построить новый массив, либо вернуться и перепроектировать ваши структуры данных. Например, вы можете использовать структурные массивы, а не массивы-структуры.

0

Для многомерного массива, нужно

reshape([x.a], size(x)) 
Смежные вопросы