Wie kann man eine Struktur erstellen und darauf zugreifen, welche Struktur der angegebenen Variablenliste in matlab entspricht? [Duplikat]
Diese Frage hat hier bereits eine Antwort:
Wie greife ich dynamisch auf Strukturfelder zu? 6 AntwortenIch möchte eine Struktur zum Speichern der Daten aus der Datenbank erstellen.
Ich habe eine Funktion erstellt
function result = LoadDataFromDB(query, columnNames)
wobei Spaltennamen die Liste der Spaltennamen darstellen, zum Beispiel {'id', 'year', 'name' ...}
Nach dem Ausführen der folgenden Abfrage
ps=conn.prepareStatement(sql);
rs=ps.executeQuery();
Ich möchte die Struktur füllen, habe aber noch nicht herausgefunden, wie ich dynamisch auf die Felder in der Struktur zugreifen kann.
Hier ist der Code, der die Struktur erstellen und füllen soll:
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
Das Hauptproblem ist die Leitung
result(count).(fieldname) = value;
Um ein Problem unten zu beschreiben, ist die Kopie von der Konsolenausgabe:
K>> result(1)
ans =
a: []
b: []
c: []
K>> result(1).('a')
ans =
[]
K>> fieldname
fieldname =
'a'
Aus der obigen Ausgabe folgt, dass das Befehlsergebnis (1). (Feldname) auf das Feld 'a' zugreifen sollte, es jedoch ausprobiert und den folgenden Fehler zurückgibt:
K>> result(1).(fieldname)
??? Argument to dynamic structure reference must evaluate to a valid field name.
Weiß jemand, wie man die Struktur dinamisch füllt?