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

auf andere Funktion in class-folder zugreifen

 

Molly

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.04.2016, 08:51     Titel: auf andere Funktion in class-folder zugreifen
  Antworten mit Zitat      
Hallo liebe Matlab-Community,

ich habe ein Programm mit mehreren Klassen Ordnern (@Folder). Ich möchte jetzt von einer neuen Funktion aus auf einige dieser Folder zugreifen. Ich bekomme immer einer Fehlermeldung in der Art:

Undefined function FunctionName for Input arguments ot type 'x'.

Ich habe versucht sowohl den "überordner" wo das gesamte Programm drin ist, als auch die Class-folder einzeln mit addpath in der Funktion hinzuzufügen, aber leider klappt das nicht. Ich bekomme weiter die selbe Fehlermeldung.
Hat jemand eine Idee woran das liegen könnte? Oder was ich anders machen muss?

Danke für eure Hilfe!
Molly


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 21.04.2016, 13:41     Titel: Re: auf andere Funktion in class-folder zugreifen
  Antworten mit Zitat      
Hallo Molly,

Angenommen, die Ordnerstruktur sie so aus:
Code:
D:\Matlab\@class1\
D:\Matlab\@class2\

Dann wird nur 'D:\Matlab' in den Pfad eingebunden. Die entsrpechenden Klassen-Unterordner werden automatisch gefunden, wenn eine Funktion mit einem entsprechenden Input aufgerufen wird.

Die Funktionen in einem Class-Ordner kann man nicht mit beliebigen anderen Inputs aufrufen, denn das wäre nicht die Natur einer Class.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Molly

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.04.2016, 14:06     Titel:
  Antworten mit Zitat      
Hallo Jan,

danke für deine Antwort. Ja meine Struktur sieht so aus
Code:
D:\Matlab\Program\@class1\x1
D:\Matlab\Program\@class2\
D:\Matlab\Program\y
 


Wenn ich eine Funktion x1 aus class1 in meinen Ordner Program hole, wo auch die Funktion y liegt die x1 aufrufen will, dann funktioniert es.
Also kann es doch irgendwie nicht nur am Input liegen, oder?

Molly
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 22.04.2016, 09:45     Titel:
  Antworten mit Zitat      
Hallo Molly,

Dochm, genau das bedeutet Deine Beobachtung. Wenn die Funktion x1 im Ordner @class1 liegt, wird sie dann und nur dann aufgerufen, wenn das erste Input die Klasse class1 hat.
Dies ist in der Dokumentation erklärt, siehe z.B. http://www.mathworks.com/help/matla.....g-classes-in-folders.html .
Diese Seite ist übrigens der erste Treffer, wenn man Google nach "Matlab class folder" fragt. Im Netz zu suchen ist oft schneller als im Forum zu fragen.

Du kannst das auch einfach ausprobieren: Erstelle zwei Order @double und @uint8 und kopiere in beide die Funktion:
Code:
function whatami(In)
fprintf('This is a: %s\nI am here: %s\n', class(In), mfilename('fullfile'));

Nun rufe die Funktionen auf:
Code:
whatami(8)   % Ist ein double als Default
whatami(uint8(8))
whatami(single(8))  % Unknown function!

Letzteres scheitert, weil es nirgendwo eine Funktion @single\whatami.m gibt.

Klarer?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Molly

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.04.2016, 09:43     Titel:
  Antworten mit Zitat      
Hallo Jan,

Vielen Dank , ja es ist klarer geworden.

Grüße,
Molly
 
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.