Вам нужно использовать имена полей, но вы можете делать это динамически.Если у вас есть структура, определенная как:
s.field1 = 'foo';
s.field2 = 'bar';
Тогда вы можете получить доступ к полю field1
с помощью либо
s.field1
s.('field1')
Единственное, что вам нужно, это функция fieldnames
для динамическогоПолучите имена полей так, чтобы ваш пример кода выглядел примерно так:
elements = fieldnames(S);
for iElement = 1:numel(elements)
element = S.(elements{iElement});
itemType = element.type;
switch itemType
case 1
val = element.val * element.somevar1;
case 2
val = element.val * element.somevar2;
case 3
val = element.val * element.somevar3;
end
end
Если это точные имена полей, вам следует заняться другими вещами.Во-первых, вам нужно переосмыслить свои имена, а во-вторых, вы можете использовать часть решения Мэтта для упрощения вашего кода.