Значения полей массива итерационных структур
Как перебрать / зациклить структуры полей массива значений.
Для структуры 1x1
student = struct();
student.name = 'jim';
student.gpa = 1.9;
Я сделаю это:
fields = fieldnames(student)
for i=1:numel(fields)
var = fields(i)
end
Но я не знаю, как повторить 1 х 2:
student = struct();
student(1).name = 'jim';
student(1).gpa = 1.9;
student(2).name = 'ryan';
student(2).gpa = 1.5;
1 ответ
Решение
Вам нужен другой for
петля
fields = fieldnames(student);
for k = 1:numel(student)
for m = 1:numel(fields)
var = student(k).(fields{m});
end
end
Кроме того, вы можете использовать тот факт, что точечная нотация создаст список, разделенный запятыми, и вы можете поместить их либо в массив ячеек (для строк), либо в обычный массив
names = {student.name};
gpas = [student.name];
Я обычно предпочитаю использовать второй подход чаще всего для доступа к тому же полю из массива структуры.