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

Undefined function or method

 

Lloyd Blankfein
Forum-Century

Forum-Century



Beiträge: 149
Anmeldedatum: 23.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.10.2011, 18:27     Titel: Undefined function or method
  Antworten mit Zitat      
Hallo,

ich habe diese simple Funktuion geschrieben:

Code:

function varargout=translate_char2Dbl(varargin)
    switch varargin
        case {'Standard', 'Performance'}
            tmp=0;
        case {'Natural Logarithm', 'Original Timeseries'}
            tmp=1;
        case 'Moving Average'
            tmp=3;
        case 'Standard Deviation'
            tmp=3;
    end
    varargout=tmp;
end
 


Wenn ich die Funktion von der Kommandozeile aus aufrufe erhalte ich diese Fehlermeldung:

>> translate_char2Dbl('Natural Logarithm')
??? Undefined function or method 'translate_char2Dbl' for input arguments of type 'char'.


Der Pfad in welchem sich die Funktion befindet ist mit set path gesetzt.
Ich hab keine Ahnung was hier schief läuft Evil or Very Mad

Vielen Dank für eure Hilfe!
Private Nachricht senden Benutzer-Profile anzeigen
Verschoben: 31.10.2011, 18:33 Uhr von Jan S
Von Bugs MATLAB nach Programmierung


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 31.10.2011, 18:37     Titel: Re: Undefined function or method
  Antworten mit Zitat      
Hallo Lloyd Blankfein,

Was ist "set path"? Den Pfad erweitert man mit "addpath".

Bei mir erzeugt die Funktion dann die Fehelermeldung:
Zitat:
??? SWITCH expression must be a scalar or string constant.
Error in ==> asd at 2
switch varargin

"varargin" ist ein CELL Vektor. Deshalb benötigt man "switch varargin{1}".
Ebenso muss auf varargout als CELL definiert werden.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Lloyd Blankfein
Themenstarter

Forum-Century

Forum-Century



Beiträge: 149
Anmeldedatum: 23.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.10.2011, 19:13     Titel:
  Antworten mit Zitat      
Hallo Jan,

über das Menü - file set path, teilt man Matlab mit in welchen Verzeichnissen sich die Systembibliotheken wie z. B. die diversen Toolboxen befinden. Natürlich kann man auch jede andere Funktion auf diese Weise verlinken. Man kann danach die gewünschte Funktion 'überall' in Matlab aufrufen, ohne vorher den Matlabarbeitspfad wechseln zu müssen.

Mit
Code:
tritt der Fehler weiterhin auf.

Gruß,
Lloyd
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 31.10.2011, 19:57     Titel:
  Antworten mit Zitat      
Hallo,

gehe doch mal zum Test in das Verzeichnis, in dem sich die Funktion befindet.
Achte zudem darauf, dass der Dateiname dem Funktionsnamen entspricht, da der Dateiname entscheidend für den Aufruf ist.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 31.10.2011, 21:44     Titel:
  Antworten mit Zitat      
Hallo Lloyd Blankfein,

Die Fehlermeldung sagt eindeutig, dass sich kein File mit dem Namen "'translate_char2Dbl.m" im Matlab-Pfad befindet. Entweder Dein File heißt anders oder Du hast den Ordner nicht in den Pfad eingebunden. Dies kann man mit WHICH testen:
Code:
which translate_char2Dbl

Zudem könnte das File noch in einem Ordner stehen, der mit @ beginnt, z.B. @double. Dann wird die Funktion tatsächlich nicht für CHAR Inputs gewählt.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Lloyd Blankfein
Themenstarter

Forum-Century

Forum-Century



Beiträge: 149
Anmeldedatum: 23.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.11.2011, 09:55     Titel:
  Antworten mit Zitat      
Hallo Jan & Harald,

sorry das ich eure Zeit verschwendet habe. Das mfile hieß anders als die Funktion.
Weshalb muss in Matlab jede Funktion in einem separaten mfile gespeichert werden?

Danke & viele Grüße,
Lloyd
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 01.11.2011, 10:04     Titel:
  Antworten mit Zitat      
Hallo,

warum dies so ist, kann ich auch nicht beantworten; ich sehe jedoch kein Problem darin, da man die Hilfsdateien in ein Verzeichnis legen und das private nennen oder es auf den Suchpfad aufnehmen kann.

Nochmal zum ursprünglichen Problem: es gibt in MATLAB-Editor ein integriertes Code-Analyse-Tool, das auf potentielle Probleme hinweist. Wenn der Funktionsname anders lautet als der Dateiname, ist der Funktionsname orange hinterlegt, um auf dieses Problem hinzuweisen.

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