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

Script wahlweise mit Attributen starten

 

Max_U

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.12.2010, 11:32     Titel: Script wahlweise mit Attributen starten
  Antworten mit Zitat      
Hallo Zusammen,
ich habe ein Script, welches ich normal über das M-File starten möchte und eventuell auch aus dem Command Window mit Attributen.

Mit Starten über das M-File meine ich, dass ich das M-File öffne und dann mit F5 den Code ausführe.

Mit Starten aus dem Command Window mit Attributen meine ich, dass ich das Script ausführen will per Befehl und ihm dabei Attribute mitübergeben möchte.

Das Script erzeugt ein Simulink Modell.

Attribute habe ich 2:
- Den Pfad für das Modell
- Ein Flag ob das Modell kompiliert werden soll oder nicht.

Mein Code:
Code:

function Erstellen(modell_pfad, flag)

    if isempty(modell_pfad)
        modell_pfad = Benutzer_eingabe();
    end

   ...

    if isempty(flag) || (flag == true)
        modell_name([], [], [], 'compile');
    end
end
 


Wenn ich nun das Script per M-File starte bekomme ich den Fehler:
Zitat:

??? Reference to a cleared variable modell_pfad


Ist mein Ansatz falsch? Wie kann ich Matlab sagen, dass Attribute dabei sein können oder auch nicht? Und wenn nicht, dass er einen Default-wert annehmen soll?

Vielen Dank.

Gruß
Max


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 01.12.2010, 11:46     Titel: Re: Script wahlweise mit Attributen starten
  Antworten mit Zitat      
Hallo Max_U,

Code:

function Erstellen(modell_pfad, flag)
  if nargin < 1
    modell_pfad = [];
  end
  if isempty(modell_pfad)
     modell_pfad = Benutzer_eingabe();
  end
   ...
 

Damit kannst Du die Funktion "Erstellen" ohne Argumente oder mit einem leeren ersten Argument aufrufen. In beiden Fällen wird die Benutzer_eingabe() aufgerufen.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.12.2010, 12:14     Titel:
  Antworten mit Zitat      
Hallo Jan S,
"nargin" funktioniert soweit, wunderbar, danke!

die function "Erstellen" ist mein Hauptprogramm. (So lautet auch der Dateiname der M-File)

wenn ich nun im ersten Schritt den Code wie folgt ändere(else Bedingung eingefügt):
Code:

function Erstellen(modell_pfad, flag)

    if nargin < 1
        modell_pfad = Benutzer_eingabe();
    else
        [pathstr, name, ext, versn] = fileparts(modell_pfad);
        modell = name;
    end

   ...
end
 


bekomme ich wieder den Fehler:
Zitat:

??? Reference to a cleared variable modell_pfad.

Error in ==> Erstellen at 6
[pathstr, name, ext, versn] = fileparts(modell_pfad);


der Aufruf erfolgt im Command Window mit:
Zitat:
Erstellen('C:\Test_Model\test.mdl')


darf ich die übergebenen Parameter nicht in dieser Form nutzen?

Danke.

Gruß
Max[/quote][/b]
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 01.12.2010, 12:58     Titel:
  Antworten mit Zitat      
Hallo Max_U,

Zitat:

??? Reference to a cleared variable modell_pfad.
Error in ==> Erstellen at 6
[pathstr, name, ext, versn] = fileparts(modell_pfad);

Ich finde das "cleared" sehr merkwürdig. Hast Du vielleicht noch einen CLEAR in Deiner Funktion, den Du in der geposteten Version weggelassen hast?? Ein CLEAR hätte hier zumindest nichts zu suchen.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.12.2010, 13:31     Titel: gelöst
  Antworten mit Zitat      
Hallo Jan S,
ja das habe ich beim Kopieren des betroffenen Ausschnitts tatsächlich ausgelassen.

Hatte ein "clear('all');" am Anfang der Funktion.

Vielen Dank für deine gute Hilfe!
Schönen Tag dir noch.

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