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

Variable wird nicht an Funktion übergeben

 

morisq
Forum-Century

Forum-Century


Beiträge: 140
Anmeldedatum: 24.06.11
Wohnort: ---
Version: R2010a
     Beitrag Verfasst am: 29.10.2011, 20:22     Titel: Variable wird nicht an Funktion übergeben
  Antworten mit Zitat      
Hallo Ich habe ein Problem. Da sich der Code auf mehr als 7000 Zeilen insgesamt beläuft werde ich hier nur die relevanten Zeilen posten, der Rest ist für meine Frage nicht interessant.

Hier mein Problem, ich will die Variable WorkDir an die Funktion LdLqBCHAuslesen(); übergeben, dies mache ich mit
Code:
.........

WorkDir = [RootDirectory, '\temp'];

Ergebnissicherung(WorkDir_GUI, WorkDir);

if Calc_Multi_check == 1
    ErgebnisToMatrix(WorkDir_GUI)
end

if Calc_LdLq_check == 1
    LdLqBCHAuslesen(WorkDir, WorkDir_GUI)
end...........
 


soweit so gut, wenn ich mit dem Debugger an der Stelle halte bevor in die Funktion gesprungen wird dann ist die Variable WorkDir auch definiert und ich kann sie auslesen.

Jetzt springe ich in die Funktion rein:

Code:
function [Ld, Lq, Psi] = LdLqBCHAuslesen(DesignName, WorkDir_GUI, WorkDir, i_steps, vkw_steps)
BCH_Erg_Name = [DesignName,'_001.BCH'];
flag_importent = 0;
.......
......
......
.....
end

und bereits in der ersten Zeile kennt mein Workspace die Variable WorkDir nicht mehr.

Wird die irgendwo standardisiert gelöscht?!? oder habe ich einen Fehler gemacht? Sad

Evtl hat mir Jemand einen Hinweis

Danke Smile
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: 29.10.2011, 20:31     Titel:
  Antworten mit Zitat      
Hallo,

ein Fehler. Die Funktion erwartet 5 Eingabeargumente, WorkDir ist das dritte davon. Du übergibst aber nur 2 Eingabeargumente --> das dritte bis fünfte fehlen.
Auch die Reihenfolge der Argumente scheint verdreht.

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

Forum-Century

Forum-Century


Beiträge: 140
Anmeldedatum: 24.06.11
Wohnort: ---
Version: R2010a
     Beitrag Verfasst am: 29.10.2011, 20:38     Titel:
  Antworten mit Zitat      
Hallo Harald,

ok das stimmt, aber warum ist die Variable dann nicht mehr vorhanden? mir ist auch aufgefallen das beim reinspringen in die Funktion mein Workspace gelöscht wird, ich habe aber nirgends einen entsprechenden Befehl.
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: 29.10.2011, 20:40     Titel:
  Antworten mit Zitat      
Hallo,

das ist nun sehr grundlegend: jede Funktion hat einen getrennten Arbeitsbereich (Workspace) von allen anderen. Variablen, die benötigt werden, müssen also übergeben werden.
Die einzige Ausnahme wären nested functions.

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

Forum-Century

Forum-Century


Beiträge: 140
Anmeldedatum: 24.06.11
Wohnort: ---
Version: R2010a
     Beitrag Verfasst am: 29.10.2011, 21:04     Titel:
  Antworten mit Zitat      
Hallo Harald,

ok das habe ich gelöst hab die Variablen korrekt übergeben und sie landen nun auch korrekt im Workspace der Funktion. nun habe ich ein anderes Problem. Im Code weiter unten kommt eine Stelle:

Code:

....
....
BCH_Full = fullfile(WorkDir, BCH_Erg_Name);

fid = fopen(BCH_Full);
ende=0;
tline = fgetl(fid);
ende=0;
.....


Da erhalte ich die Fehlermeldung:

??? Error using ==> fgetl at 44
Invalid file identifier. Use fopen to generate a valid file identifier

Hast du da evtl n Tipp?

Entschuldigt bitte die Art meiner Fragen aber der Code ist nicht auf meinem Mist gewachsen, ich muss mich da nun nur drum kümmern das das GUI auch das macht was es soll.

Grüße
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: 29.10.2011, 21:26     Titel:
  Antworten mit Zitat      
Hallo,

das Problem liegt in dieser Zeile:
Code:
fid = fopen(BCH_Full);


Die Datei wird offensichtlich nicht richtig geöffnet (z.B. weil sie nicht existiert). fid <= 0 weist auf ein Problem hin, und das fängt man auch gerne in einer Fehlerabfrage ab, etwa so:

Code:
if fid < 0
error('Ein Problem mit der Datei ist aufgetreten')
end


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.