Вы можете использовать функцию fieldnames , чтобы получить имена полей и затем извлечь данные.
Когда вы извлекаете данные, вы можете включить правую часть инструкции в []
: это позволяет хранить данные в массиве
В качестве альтернативы, вы можете напрямую указать имя поля
Возможный подход:
% Define the struct
s(1).field_a=1
s(1).field_b=2
s(1).field_c=3
s(2).field_a=10
s(2).field_b=20
s(2).field_c=30
% Get the field names
str_fields=fieldnames(s)
% Extract the data form the fields
%
% First method
%
% Data from field "field_a"
the_data_1=filed_a_data=[s(:).(str_fields{1})]
% Data from field "field_a"
%
% Second method
%
the_data_2=filed_a_data=[s(:).field_c]
Примечание в утверждении:
the_data_1=filed_a_data=[s(:).(str_fields{1})]
s(:)
позволяет получить доступ ко всем элементам массива структуры
В коде:
- определить пример (1 x 2) struct
- с первым методом: выберите имя поля из массива
str_field
и сохраните данные в массиве the_data_1
- с помощью второго метода: Напишите непосредственно имя поля и сохраните данные в массиве
the_data_2
Вывод:
the_data_1 =
1 10
the_data_2 =
3 30