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

isobjeckt()- vs. isvector()-Abfragen

 

bombaaa
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 01.12.10
Wohnort: ---
Version: R2010b
     Beitrag Verfasst am: 13.12.2010, 12:07     Titel: isobjeckt()- vs. isvector()-Abfragen
  Antworten mit Zitat      
Hallo liebe Community!

Ich hab' hier mehrere Funktionen gebastelt die ich mit direkten Werten (mindestens ein Vektor mit Daten) oder aber mit meinem Selbst generierten Objekt ("Eingangsdaten') befeuern kann. Den Funktionen wollte ich nun ein Art "abfrage-Routine" an den Anfang stellen, wodurch ich die Multifunktionalität der Funktionen in Bezug auf die Eingangsvariablen, realisieren kann.
Also eine Entscheidung, wie die üergebenen Werte aufbereitet werden, damit die Funktion hinterher tut was sie soll, unabhängig davon welche Eingangsdaten existieren.
Der folgende Code-Schnipsel soll nun unterscheiden ob ich einen Vector oder ein Objekt als Eingabevariable habe.

Code:

    error(nargchk(1,3,nargin));
    if nargin == 1
        if (isvector(oData))
            iWert_0 = 1;
            iWert_end = length(oData);
            vData = oData;
        elseif (isobject(oData))
            vData=oData.vData;
            iWert_0 = 1;
            iWert_end = length(vData);
        else
            display([
                'Falsche Eingabeparameter!'
            ]);
        end
 


Beim Debuggen hab ich nun herausgefunden, dass er leider mein Objekt der Klasse "Eingangsdaten" nicht als Objekt sondern als Vektor zu erkennen scheint. Ich weiss nicht warum und kann den fehler auch nicht aufspüren.
Mein Objekt definiert sich in einer Klasse die inetwa so aussieht (gekürzte Version):

Code:

classdef Eingangsdaten
    %EINGANGSDATEN Erstellt ein Objekt (...)
    properties (SetAccess = protected)
        (diverse Variablen)
        (...)
    end
    methods
        function obj = Eingangsdaten(sPfad) % Constructor
            (...)
        end %function
    end %methods
end %classdef
 


Ist die Klasse vielleicht falsch deklariert? Bisher hat alles wunderbar funktioniert, bis ich nun eine Art Fehlerbehandlung inbauen wollte, damit keine Falschen Daten behandelt werden und Ergebnisse herauskommen die nicht sein dürfen.

Bitte um Hilfe und Danke schon 'mal im Vorraus

[edit:]
Die Eingabe an der Matlab-Konsole
Code:

isvector(Eingangsdaten)
 

gibt mir seltsamerweise eine 1 anstatt der erwarteten 0 zurück... folglich müsste etwas mit der classdef falsch sein, oder?
[/edit]
[edit(2):]
Eine "Umgehung" meines Problems wäre wenn ich zuerst abfrage ob es sich um ein Objekt handelt. Wird folglich ein Vektor übergeben trifft die Bedingung an dieser Stelle ja nicht zu. Bei der zeiten Abfrage würde ich dann ja das benötigte "true" bekommen. Diese Behandlung würde zwar funktionieren, aber ich halte das für unsauber...
[/edit]
Private Nachricht senden Benutzer-Profile anzeigen


bombaaa
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 01.12.10
Wohnort: ---
Version: R2010b
     Beitrag Verfasst am: 14.12.2010, 14:12     Titel:
  Antworten mit Zitat      
Ich glaube mein Problem liegt in der Eigenart von Matlab ALLES in Vektoren zu speichern begründet, daher scheint es ja die einzige Möglichkeit zu sein, zuerst zu überprüfen ob es sich um ein Objekt handelt oder nicht.

Falls noch jemandem etwas dazu einfällt, nur her mit den Info's, ich setz den thread aber mal auf 'mit Vorschlag'.

so far...
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 14.12.2010, 14:23     Titel:
  Antworten mit Zitat      
Hallo,

die Abfrage dürfte besser mit isnumeric oder isa funktionieren.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
bombaaa
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 01.12.10
Wohnort: ---
Version: R2010b
     Beitrag Verfasst am: 14.12.2010, 16:13     Titel:
  Antworten mit Zitat      
Hallo Harald,

danke für den Vorschlag, der passt tatsächlich besser! Scheinbar hab ich den komplett übersehen und wusste mangels MATLAB-Erfahrung nichteinmal von seiner existenz.

So funktionierts definitiv besser!

Ich setze den thread dann mal auf 'beantwortet'.

bye
Private Nachricht senden Benutzer-Profile anzeigen
 
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 - 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.