Как создать и получить доступ к структуре, структура которой соответствует заданному списку переменных в matlab? [Дубликат]
This question already has an answer here:
How do I access structure fields dynamically? 6 answersЯ хотел бы создать структуру для хранения данных из базы данных.
Я создал функцию
function result = LoadDataFromDB(query, columnNames)
где имена столбцов представляют список имен столбцов, например, {'id' apos ;, 'apos; year' ',' name 'apos; ...}
После выполнения следующего запроса
ps=conn.prepareStatement(sql);
rs=ps.executeQuery();
Я хотел бы заполнить структуру, но не понял, как получить динамический доступ к полям в структуре.
Вот фрагмент кода, который должен создать и заполнить структуру:
varnamelist = genvarname(columnNames);
result = cell2struct(cell(size(varnamelist(:))), varnamelist(:));
while rs.next()
count=count+1;
for i = 1 : length(columnNames)
fieldname = columnNames(i);
value = char(rs.getString(i));
%result(count).columnNames(i)=char(rs.getString(i));
result(count).(fieldname) = value;
end
end
Основной проблемой является линия
result(count).(fieldname) = value;
Для описания проблемы ниже приведена копия из вывода консоли:
K>> result(1)
ans =
a: []
b: []
c: []
K>> result(1).('a')
ans =
[]
K>> fieldname
fieldname =
'a'
Исходя из вышеприведенного вывода, результат команды (1). (Fieldname) должен получить доступ к полю 'a'; но, пробуя это, он возвращает следующую ошибку:
K>> result(1).(fieldname)
??? Argument to dynamic structure reference must evaluate to a valid field name.
Кто-нибудь знает, как динамически заполнить структуру?