|
|
Structs in einem Objekt durchsuchen |
|
stempf |
Forum-Anfänger
|
|
Beiträge: 18
|
|
|
|
Anmeldedatum: 19.12.20
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2017a
|
|
|
|
|
|
Verfasst am: 27.01.2021, 11:33
Titel: Structs in einem Objekt durchsuchen
|
|
|
|
|
Hallo Zusammen!
ich habe folgendes Problem:
Ich habe ein Objekt mit x Einträgen und jeder dieser Einträge ist wie in dem Bild im Anhang aufgebaut. Der Aufbau ist aus verschiedenen Structs und diese Structs haben unterschiedliche Table mit einträgen.
Ich würde jetzt gerne das Struct Equip wie folgt durchsuchen:
Jeder Table im Struct Equip soll nach den Zahlen 1 , 2 , 3 , 4 durchsucht werden und falls eine Bedingung richtig ist soll der Name des Table gespeichert werden.
z.B.: u(1).equip durchsuchen in welchem Table eine 1 steht
-> falls der Table vvg_knx eine 1 hat soll er gespeichert bzw. ausgegeben werden.
Bisher habe ich noch keinen sinnvollen Ansatz gefunden. Ich muss das struct durchsuchen ohne die Felder des Struct anzugeben weil diese felder Sich in jedem Struct in den weiteren Einträgen in dem Objekt unterscheiden können.
Wäre cool wenn einer einen Ansatz für mich hätte.
Grüße
Beschreibung: |
|
Download |
Dateiname: |
Bildschirmfoto 2021-01-27 um 11.21.27.png |
Dateigröße: |
164.43 KB |
Heruntergeladen: |
309 mal |
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 28.01.2021, 14:17
Titel:
|
|
Hallo,
in einem Struct einen 1x1-Table abzulegen erscheint mir stark übertrieben. Warum nicht einfach die Zahl ablegen?
Um Felder iterativ zu durchsuchen kann die Funktion
fieldnames
hilfreich sein.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
stempf |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 18
|
|
|
|
Anmeldedatum: 19.12.20
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2017a
|
|
|
|
|
|
Verfasst am: 01.02.2021, 10:52
Titel:
|
|
Hallo,
ich will nicht die Inhalte ausgeben sondern die Namen der Felder wie z.B: "vvg_knx".
Ich habe im Anhang zwei Bilder wo ich die Feldernamen in eine Excel Datei schreiben will mit der Funktion Writetable. In den Bilder sieht man im Command window das die Feldernamen ausgegeben werden aber nicht mit dem Befehl writetable in die Excel geschrieben werden.
Leider kommt dort immer der Fehler : "Parameter name must be text."
Kann mir da einer helfen?
Hier noch der Code:
Beschreibung: |
|
Download |
Dateiname: |
Bildschirmfoto 2021-02-01 um 10.47.40.png |
Dateigröße: |
190.61 KB |
Heruntergeladen: |
273 mal |
Beschreibung: |
|
Download |
Dateiname: |
Bildschirmfoto 2021-02-01 um 10.47.12.png |
Dateigröße: |
179.19 KB |
Heruntergeladen: |
267 mal |
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 01.02.2021, 11:04
Titel:
|
|
Hallo,
bei Problemen mit einem Befehl kann ich generell nur dazu raten, erst mal die Doku zu lesen. Hier sieht man dann, dass du writetable wie xlswrite nutzt; writetable hat aber eine ganz andere Schnittstelle.
Statt
erscheint mir folgendes sinnvoller:
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
stempf |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 18
|
|
|
|
Anmeldedatum: 19.12.20
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2017a
|
|
|
|
|
|
Verfasst am: 01.02.2021, 11:39
Titel:
|
|
Habe ich schon versucht aber mit xlswrite gibt der auch einen Fehler aus:
Wenn ich so mit writetable arbeite gibt der mir nur das letzte feld in die Excel aus.
Man muss doch iwie nach jedem durchlauf der for schleife in die nächste Excel zeile schreiben könne...
in der beschreibung der Funktion writetable finde ich keine passende Lösung des problems
Danke für die antworten
Beschreibung: |
|
Download |
Dateiname: |
Bildschirmfoto 2021-02-01 um 11.36.00.png |
Dateigröße: |
166.08 KB |
Heruntergeladen: |
259 mal |
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 01.02.2021, 11:55
Titel:
|
|
Hallo,
dann versuch mal
Wenn du eine tatsächliche Beispieldatei / -variable anhängst statt eines Screenshots, dann probiere ich meine Vorschläge auch gerne aus. Das ist dann effizienter als mehrmaliges Hin und Her.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
stempf |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 18
|
|
|
|
Anmeldedatum: 19.12.20
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2017a
|
|
|
|
|
|
Verfasst am: 01.02.2021, 12:06
Titel:
|
|
Habe ich so probiert, jetzt läuft die Funktion ab aber lieder erscheint nichts in der Excel datei
Gibt es evtl. die alternative mit writetable zu arbeiten? weil dort zumindest in die Exceldatei geschrieben wird
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 01.02.2021, 12:08
Titel:
|
|
Hallo,
sicher gibt es die, ist aber umständlicher. Sinnvoller erscheint mir zu untersuchen, warum mit xlswrite nichts geschrieben wird. Nochmal:
Zitat: |
Wenn du eine tatsächliche Beispieldatei / -variable anhängst statt eines Screenshots, dann probiere ich meine Vorschläge auch gerne aus. |
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
stempf |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 18
|
|
|
|
Anmeldedatum: 19.12.20
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2017a
|
|
|
|
|
|
Verfasst am: 01.02.2021, 12:11
Titel:
|
|
Ja dann müsste ich eine Beispieldatei mal erstellen.
Matlab gibt eine Warnung raus vielleicht liegt darin das Problem:
|
|
|
stempf |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 18
|
|
|
|
Anmeldedatum: 19.12.20
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2017a
|
|
|
|
|
|
Verfasst am: 01.02.2021, 12:14
Titel:
|
|
Harald hat Folgendes geschrieben: |
Hallo,
sicher gibt es die, ist aber umständlicher. Sinnvoller erscheint mir zu untersuchen, warum mit xlswrite nichts geschrieben wird. Nochmal:
Zitat: |
Wenn du eine tatsächliche Beispieldatei / -variable anhängst statt eines Screenshots, dann probiere ich meine Vorschläge auch gerne aus. |
Grüße,
Harald |
Reichen die beiden Dateien aus? einmal die Funktion und einmal das Objekt das in dieser Funktion eingelesen wird.
Beschreibung: |
|
Download |
Dateiname: |
matlab.mat |
Dateigröße: |
19.48 KB |
Heruntergeladen: |
241 mal |
Beschreibung: |
|
Download |
Dateiname: |
test_struct.m |
Dateigröße: |
737 Bytes |
Heruntergeladen: |
254 mal |
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 01.02.2021, 12:20
Titel:
|
|
Hallo,
in dem Fall leider nicht:
Zitat: |
Warning: Variable 'z' originally saved as a items cannot be instantiated as an
object and will be read in as a uint32. |
Man braucht wohl die Klassendefinitionsdatei.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
stempf |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 18
|
|
|
|
Anmeldedatum: 19.12.20
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2017a
|
|
|
|
|
|
Verfasst am: 01.02.2021, 12:24
Titel:
|
|
Harald hat Folgendes geschrieben: |
Hallo,
in dem Fall leider nicht:
Zitat: |
Warning: Variable 'z' originally saved as a items cannot be instantiated as an
object and will be read in as a uint32. |
Man braucht wohl die Klassendefinitionsdatei.
Grüße,
Harald |
Beschreibung: |
|
Download |
Dateiname: |
items.m |
Dateigröße: |
2.29 KB |
Heruntergeladen: |
256 mal |
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 01.02.2021, 12:38
Titel:
|
|
Hallo,
bei mir funktioniert dieser Code:
Allerdings wird die Ausgabe in jeder j-Iteration überschrieben. Wie sollen denn die Outputs verschiedener Elemente kombiniert werden? Wenn sie einfach nur untereinander geschrieben werden sollen:
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
stempf |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 18
|
|
|
|
Anmeldedatum: 19.12.20
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2017a
|
|
|
|
|
|
Verfasst am: 01.02.2021, 12:48
Titel:
|
|
Ja erstmal untereinander wäre schon sehr Hilfreich.
Ich habe eine andere Ausgabefunktion wo die vorherigen Structs in eine Excel geschrieben werde:
Am besten wäre es wenn nach " x(j,4) = obj(j).product.preis" in eine Neue Zeile geschrieben wird mit den elementen aus equip.
Trotzdem Funktioniert meine ausgabe nicht. Auch nicht mit Ihrem angepassten Code.
Fehler:
kann das an meiner Matlab version liegen? benutze 2017a
|
|
|
stempf |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 18
|
|
|
|
Anmeldedatum: 19.12.20
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2017a
|
|
|
|
|
|
Verfasst am: 01.02.2021, 13:30
Titel:
|
|
Habe es jetzt erstmal so gelöst. jetzt werden die Feldnamen in eine Excel gespeichert
|
|
|
|
Gehe zu Seite 1, 2 Weiter
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|