Jak stworzyć i uzyskać dostęp do struktury, której struktura odpowiada danej liście zmiennych w matlab? [duplikować]
To pytanie ma już tutaj odpowiedź:
Jak uzyskać dynamiczny dostęp do pól struktury? 6 odpowiedziChciałbym stworzyć strukturę do przechowywania danych z bazy danych.
Stworzyłem funkcję
function result = LoadDataFromDB(query, columnNames)
gdzie nazwy kolumn reprezentują listę nazw kolumn, na przykład {'id', 'year', 'name' ...}
Po wykonaniu następującego zapytania
ps=conn.prepareStatement(sql);
rs=ps.executeQuery();
Chciałbym wypełnić strukturę, ale nie zorientowałem się, jak dynamicznie uzyskać dostęp do pól w strukturze.
Oto fragment kodu, który powinien tworzyć i wypełniać strukturę:
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
Głównym problemem jest linia
result(count).(fieldname) = value;
Opisanie problemu poniżej to kopia z wyjścia konsoli:
K>> result(1)
ans =
a: []
b: []
c: []
K>> result(1).('a')
ans =
[]
K>> fieldname
fieldname =
'a'
Na podstawie powyższego wyniku polecenie wynik (1). (Nazwa pola) powinno uzyskać dostęp do pola „a”, ale wypróbowanie go, zwraca następujący błąd:
K>> result(1).(fieldname)
??? Argument to dynamic structure reference must evaluate to a valid field name.
Czy ktoś wie jak wypełnić strukturę dinamicznie?