Wie übergibt man ein struct-array zu einem anderen struct-array?
Ich versuche zu pass ein struct-array zu einem anderen, ohne Erfolg.
s(1).f = (1:3);
s(2).f = (4:6);
s(3).f = (7:9);
q(1).n = 'nameA';
q(2).n = 'nameB';
q(3).n = 'nameC';
q(3).f = [];
q.f = s.f
Bereich n
sollte nicht geändert werden.
Vermisse ich etwas?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ordnen Sie jedem Feld ein array von structs direkt auf ein cell array und dann können Sie
deal
umwandeln einer struct zu einem cell-array:Hier ist ein guter Artikel über diese Art der Sache
Edit:
Oder wie Shai Punkte heraus, die Sie können gehen Sie einfach
[q.f] = s.f
?deal
Befehl funktioniert nicht. Die Fehlermeldung ist: "Die linke Seite hat c{:} in der eckigen Klammer, die erfordert, dass c definiert werden, so dass die Anzahl der erwarteten Ergebnisse berechnet werden können"s(1).fNew
und ich wouldlike to-pass-arrayss.f
unds.fNew
zu structq
so, dass es immerq.n
,q.f
undq.fNew
? Das wäre toll![]
und warum Sie Zugangc
mit der Wert-Betreiber{}
statt der Zelle-Feld-operator()
. Thx!!!deal
überhaupt. Ich kann nicht erklären es viel besser als die Artikel. Im Grundec{:}
gibt Sie eine durch Kommas getrennte Liste von Variablen, setzen[]
auf der linken Seite der Gleichung ist erforderlich, matlab-syntax, wenn es mehr als eine variable auf LS.s.f
, die auch liefert eine Komma getrennte Liste (CSL). Die[]
auf LS in Kombination mit einem CSL auf der rhs ist der Ersatz syntax fürdeal()
Befehl, da Matlab version 7.[q.f] = s.f
notation funktioniert nur, wennq
ist vorbelegt, um die richtige Größe. Wennq
nicht zuvor definiert wurde, ist dieser Ansatz nur definierenq
alss(1).f
Wie etwa
arrayfun
Offenbar
setfield
ist nur für die Einrichtung einer struct element im struct-array -- so ist diearrayfun
.EDIT:
eine viel bessere Antwort gegeben, indem Dan.
fieldnames
.Ich wollte, dass dieser Vorschlag von Shai mehr sichtbar, weil es einfacher zu Lesen.
[q.f] = s.f
Obwohl ich sagen würde, dass @Dan ' s Antwort ist ziemlich canon für diese Frage, möchte ich einen alternativen:
Zwar etwas Ausführlicher als die
[q.f] = s.f
syntax, es hat den Vorteil, funktionieren wie erwartet, auch wennq
wurde nicht vorbelegt, um die richtige Größe zu sein, eine Kopie ders
.Beispiel:
Zurück
q.f
als1x1 struct
gleichs(1).f