WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

struct per funktion auslesen

 

Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.06.2014, 14:52     Titel: struct per funktion auslesen
  Antworten mit Zitat      
Hallo, ich habe folgendes Problem:
in einem größeren Programm wird eine Exceldatei ausgelesen und in einem struct abgelegt. Dabei handelt es sich ausnahmslos um Strings. Nun soll diese struct ausgelesen werden und die Unterpunkte sollen entsprechend den Oberpunkten zugeordnet werden. Das ganze hat bisher immer super funktioniert, soll nun aber OOP geschrieben werden. Wenn ich die Funktion nun aufrufe kommt nach dem ersten erfolgreichen durchlauf: Undefined function 'StructExploration' for input arguments of type 'struct'. Meine Funktion ist:

Code:
function [Nodes,Parents] = StructExploration(~, Struct, Nodes, Parent, Parents)
            FieldNamesOfStruct=fieldnames(Struct);
            for i=1:length(FieldNamesOfStruct)
                Nodes=[Nodes; FieldNamesOfStruct(i), Parent];
                if isstruct(Struct.(FieldNamesOfStruct{i}))
                    Parents=[Parents size(Nodes,1)];
                    [Nodes,Parents] = StructExploration(Struct.(FieldNamesOfStruct{i}), Nodes, size(Nodes,1), Parents);
                end
            end
        end

Durch den Aufruf der Funktion innerhalb der Funktion geht er einfach eine Stufe tiefer und genau da kommt der Fehler. Ich bin mir sicher das der Fehler trivial ist, ich komme nur leider im Moment einfach nicht darauf Sad


dmjr
Forum-Century

Forum-Century


Beiträge: 199
Anmeldedatum: 02.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.06.2014, 21:30     Titel:
  Antworten mit Zitat      
Das ist jetzt keine öffentliche Funktion mehr sondern eine Objektmethode, Objektmethoden werden immer aufgerufen indem man sie mit instanz.Funktionsname(...) aufruft wobei instanz die Variable ist in der das Objekt gespreichert ist. Dies gilt bei Matlab IMMER, auch wenn man sich gerade innerhalb einer Objektmethode befindet.
Code:

function [Nodes,Parents] = StructExploration(obj, Struct, Nodes, Parent, Parents)
            FieldNamesOfStruct=fieldnames(Struct);
            for i=1:length(FieldNamesOfStruct)
                Nodes=[Nodes; FieldNamesOfStruct(i), Parent];
                if isstruct(Struct.(FieldNamesOfStruct{i}))
                    Parents=[Parents size(Nodes,1)];
                    [Nodes,Parents] = obj.StructExploration(Struct.(FieldNamesOfStruct{i}), Nodes, size(Nodes,1), Parents);
                end
            end
        end
 

Wie vermutlich schon bemerkt, bekommt jede Objektmethode das Objekt übergeben.


Weitergehend sieht es für mich so aus, als ob obige Funktion eigentlich eine Klassenmethode sein sollte, was in Matlab mit "Access=static" erfolgt. Der Aufruf ist dann mit Klassenname.Funktionsname möglich.
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.06.2014, 10:50     Titel:
  Antworten mit Zitat      
natürlich, manchmal kann man echt betriebsblind sein. Rolling Eyes vielen dank
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 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.