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

Problem mit Ausführen von Funktion

 

Alex
Forum-Anfänger

Forum-Anfänger


Beiträge: 35
Anmeldedatum: 13.08.07
Wohnort: Dortmund
Version: ---
     Beitrag Verfasst am: 01.08.2008, 10:48     Titel: Problem mit Ausführen von Funktion
  Antworten mit Zitat      
Hi,

folgende Situation: Ich habe mehrere GUIs für eine SQL Geschichte Wink Um vorher jedoch alle nötigen "Einstellungen" vorzunehmen, die vorher zu Fuss erledigt werden mussten, habe ich mir eine Funktion geschrieben.

Diese ändert die Current Directory jeweils zu der richtigen Position und soll eine Funktion aufrufen.

Code:

...

cd('\\hernan.mpi-dortmund.mpg.de\screeningshared\MatlabWork');

mystart

mysql('status');

...
 


Die Funktion 'mystart' ist der Knackpunkt. Ohne diese funktioniert der Rest nicht!


Der Status sollte eigentlich einen Wert zurückgeben, jedoch kommt folgende Fehlermeldung:

Code:
>> getready('C:\Dokumente und Einstellungen\aschuetz\Eigene Dateien\MATLAB\mysql','C:\Dokumente und Einstellungen\aschuetz\Eigene Dateien\MATLAB')
>> mysql('status')
??? Attempt to execute SCRIPT mysql as a function:
\\hernan.mpi-dortmund.mpg.de\screeningshared\MatlabWork\mysql\mysql.m


Zu Fuss funktioniert alles wunderbar!

Grüße
_________________

Gruß
Alex
Private Nachricht senden Benutzer-Profile anzeigen


dib0r
Forum-Guru

Forum-Guru


Beiträge: 413
Anmeldedatum: 09.05.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.08.2008, 11:24     Titel:
  Antworten mit Zitat      
Hallo,

so wie es aussieht ist mysql ein Skript und keine Funktion. Der Unterschied liegt darin dass zum einen alle Variablen in einer Funktion nach dem Funktionsaufruf wieder gelöscht werden (lokale Variablen) und dass man Funktionen Ein- und Ausgabewerte zuweisen kann.

Um eine Funktion zu erstellen, muss der Kopf der m-Datei ungefähr so aussehen:
Code:
function y=meineFunktion(x)
. Ausserdem muss dann deine m-Datei auch meineFunktion.m heissen. Schau dich mal im Forum ein bisschen um, dann erfährst du wie man Funktionen schreibt (ist eigentlich nicht schwierig).

Nunja, falls du dennoch mit Skripten arbeiten willst, kannst du mysql keine Eingabevariable zuweisen, darfst praktisch nur "mysql" schreiben, ohne runde Klammern (so wie mystart).

MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
Alex
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 35
Anmeldedatum: 13.08.07
Wohnort: Dortmund
Version: ---
     Beitrag Verfasst am: 01.08.2008, 11:42     Titel:
  Antworten mit Zitat      
dib0r hat Folgendes geschrieben:
Hallo,

so wie es aussieht ist mysql ein Skript und keine Funktion. Der Unterschied liegt darin dass zum einen alle Variablen in einer Funktion nach dem Funktionsaufruf wieder gelöscht werden (lokale Variablen) und dass man Funktionen Ein- und Ausgabewerte zuweisen kann.

Um eine Funktion zu erstellen, muss der Kopf der m-Datei ungefähr so aussehen:
Code:
function y=meineFunktion(x)
. Ausserdem muss dann deine m-Datei auch meineFunktion.m heissen. Schau dich mal im Forum ein bisschen um, dann erfährst du wie man Funktionen schreibt (ist eigentlich nicht schwierig).

Nunja, falls du dennoch mit Skripten arbeiten willst, kannst du mysql keine Eingabevariable zuweisen, darfst praktisch nur "mysql" schreiben, ohne runde Klammern (so wie mystart).

MfG


Hi,

also ich glaube wir reden einander vorbei.

'mystart' ist nicht von mir geschrieben, ich muss es nur benutzen, weil es auch bereits einige notwendige Dinge läd.
Ich will also 'mystart' einfach nur einmal ausführen, was ich bis jetzt per Hand mache. Des Weiteren ist mysql('status') nur ein Test, ob ich eine Verbindung habe...
_________________

Gruß
Alex
Private Nachricht senden Benutzer-Profile anzeigen
 
dib0r
Forum-Guru

Forum-Guru


Beiträge: 413
Anmeldedatum: 09.05.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.08.2008, 12:00     Titel:
  Antworten mit Zitat      
Alex hat Folgendes geschrieben:

also ich glaube wir reden einander vorbei.


Hm, gut möglich Smile

D.h. ohne "mystart" funktioniert dein "mysql" nicht, du weisst aber nicht genau was mystart eigentlich macht? Die Fehlermeldung lässt allerdings darauf schliessen, dass es mit "mysql" einen Fehler gibt.

Hast du dir mal
Code:
vor, während und nach dem Aufruf von getready ausgeben lassen? Vielleicht gibt es ja da noch Probleme bzw. wird irgendwo der Pfad zurückgesetzt. Ist "mysql" eine Funktion oder ein Skript?

MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
Alex
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 35
Anmeldedatum: 13.08.07
Wohnort: Dortmund
Version: ---
     Beitrag Verfasst am: 01.08.2008, 12:49     Titel:
  Antworten mit Zitat      
'mysql' ist eine Funktion, mit deren Hilfe ich mysql Befehle an einen Server senden kann.

Dieses 'mysql' ist freiverfügbar aus dem Netz. Zusätzlich benutze ich Funktionen, die auf einem Server in unserem Netzwerk liegen (deshalb wechsel ich erst das Verzeichnis mit einem '//' am Anfang).

'mystart' habe ich nicht selbst geschrieben. Ich weiß nicht genau, was die Funktion macht; durch diese habe ich Zugriff auf die Funktionen auf unserem Server (das sind m-files, die ich für die Datenbank später benutze).

Ich habe sie mal angeschaut:

Code:
if isempty(getenv('sharedMatlabLib'))
    addpath(genpath(pwd));
    rehash;
    setenv('sharedMatlabLib') = 1;
end
 


Hoffe das ist ein bisschen verständlich Wink
_________________

Gruß
Alex
Private Nachricht senden Benutzer-Profile anzeigen
 
Alex
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 35
Anmeldedatum: 13.08.07
Wohnort: Dortmund
Version: ---
     Beitrag Verfasst am: 01.08.2008, 12:54     Titel: Lösung
  Antworten mit Zitat      
Hahaha Very Happy

Ich bin sooo blöd. Ich hab den Fehler gefunden. Ich habe vorhin etwas herauskommentiert und das Problem ist einfach nur, dass der Befehl zum testen, also "mysql('status')", nicht ausgeführt werden kann, weil dafür die entsprechenden Dateien in meinem Workspace liegen müssen!

Ahhh... so eine dumme Sache Wink

Danke für eure Hilfe!

Smile
_________________

Gruß
Alex
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.