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

Kann ich einer Matlab.exe Parameter übergeben?

 

Mueller
Forum-Anfänger

Forum-Anfänger


Beiträge: 41
Anmeldedatum: 21.11.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.04.2017, 10:31     Titel: Kann ich einer Matlab.exe Parameter übergeben?
  Antworten mit Zitat      
Ich habe aus meinem Matlab Code eine .exe erstellt (Standalone exe). Mithilfe des Deploytools.
Könnte ich dieser Matlab.exe beim Aufruf Übergabeparameter übergeben?
Zb: den Dateinamen des Input-Files? Müsste ich mein .m_File umschreiben? Muss ich eine Funktion daraus machen?

Hier der Anfang meines Matlab-Codes. (Einleseprozedere von meinem .txt-File)

Code:
r_inputdataSigmaX=[;];
r_inputdataSigmaY=[;];
r_inputdataTau=[;];
w_inputdataTau=[;];
w_inputdataSigmaY=[;];
w_inputdataSigmaX=[;];
cuttofflinesSigmaX=[;];
cuttofflinesSigmaY=[;];
cuttofflinesTau=[;];
r_inputdata_logic=zeros(1,3);
w_inputdata_logic=zeros(1,3);%[0;0;0]; %zeros(m,n)
inputdata_cuttofflines_logic=zeros(1,3);%[0;0;0];
default_value_z=1e8; %hier setze defaultmässig die z Komponente/Wert der Cutofflinien
row1=0;
row2=0;
row3=0;
index_counter=1;
t=0;
set(groot,'DefaultFigureColormap',jet)

%Einlese Prozedere
%wholecontent = fileread(Input_File);
wholecontent = fileread('Matlab_Export.txt')
%wholecontent = fileread(Input_File);
sections = regexp(wholecontent, '\*+([^*]+)\*+([^*]+)', 'tokens')
for section = sections
   switch(strtrim(section{1}{1}))
        case 'Plot Page Options and Settings'
          keyvalues = regexp(section{1}{2}, '([^\n\r=]+)=([^\n\r=]+)', 'tokens')
          plotpageSettings = cell2table(vertcat(keyvalues{:}), 'VariableNames', {'Key', 'Value'})      
       %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       %%Die Diagram Options gelten jeweils für rainflow und woehler
       case 'Diagram Options SigmaX'
          keyvalues = regexp(section{1}{2}, '([^\n\r=]+)=([^\n\r=]+)', 'tokens')
          diagramoptionsSigmaX = cell2table(vertcat(keyvalues{:}), 'VariableNames', {'Key', 'Value'})    
       case 'Diagram Options SigmaY'
          keyvalues = regexp(section{1}{2}, '([^\n\r=]+)=([^\n\r=]+)', 'tokens')
          diagramoptionsSigmaY = cell2table(vertcat(keyvalues{:}), 'VariableNames', {'Key', 'Value'})
        case 'Diagram Options Tau'
          keyvalues = regexp(section{1}{2}, '([^\n\r=]+)=([^\n\r=]+)', 'tokens')
          diagramoptionsTau = cell2table(vertcat(keyvalues{:}), 'VariableNames', {'Key', 'Value'})
       %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       case 'Woehler Lines SigmaX'
          keyvalues = regexp(section{1}{2}, '([^\n\r=]+)=([^\n\r=]+)', 'tokens')
          w_diagramoptionsSigmaX = cell2table(vertcat(keyvalues{:}), 'VariableNames', {'Key', 'Value'})
          w_inputdata_logic(1,1) = 1;
       case 'Woehler Lines SigmaY'
          keyvalues = regexp(section{1}{2}, '([^\n\r=]+)=([^\n\r=]+)', 'tokens')
          w_diagramoptionsSigmaY = cell2table(vertcat(keyvalues{:}), 'VariableNames', {'Key', 'Value'})
          w_inputdata_logic(1,2) = 1;
        case 'Woehler Lines Tau'
          keyvalues = regexp(section{1}{2}, '([^\n\r=]+)=([^\n\r=]+)', 'tokens')
          w_diagramoptionsTau = cell2table(vertcat(keyvalues{:}), 'VariableNames', {'Key', 'Value'})
          w_inputdata_logic(1,3) = 1;
        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       case 'Rainflow Options SigmaX'
          keyvalues = regexp(section{1}{2}, '([^\n\r=]+)=([^\n\r=]+)', 'tokens')
          r_diagramoptionsSigmaX = cell2table(vertcat(keyvalues{:}), 'VariableNames', {'Key', 'Value'})    
       case 'Rainflow Options SigmaY'
          keyvalues = regexp(section{1}{2}, '([^\n\r=]+)=([^\n\r=]+)', 'tokens')
          r_diagramoptionsSigmaY = cell2table(vertcat(keyvalues{:}), 'VariableNames', {'Key', 'Value'})
       case 'Rainflow Options Tau'
          keyvalues = regexp(section{1}{2}, '([^\n\r=]+)=([^\n\r=]+)', 'tokens')
          r_diagramoptionsTau = cell2table(vertcat(keyvalues{:}), 'VariableNames', {'Key', 'Value'})
        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       case 'Rainflow Cutofflines SigmaX'
          cuttofflinesSigmaX = cell2mat(textscan(section{1}{2}, '%f%f', 'HeaderLines', 1))
          inputdata_cuttofflines_logic(1,1) = 1;
       case 'Rainflow Cutofflines SigmaY'
          cuttofflinesSigmaY = cell2mat(textscan(section{1}{2}, '%f%f', 'HeaderLines', 1))
          inputdata_cuttofflines_logic(1,2) = 1;
       case 'Rainflow Cutofflines Tau'
          cuttofflinesTau = cell2mat(textscan(section{1}{2}, '%f%f', 'HeaderLines', 1))
          inputdata_cuttofflines_logic(1,3) = 1;
         %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       case 'StressSpectrum Data SigmaX'
            w_inputdataSigmaX = cell2mat(textscan(section{1}{2}, '%f%f', 'HeaderLines', 1))
       case 'StressSpectrum Data SigmaY'
            w_inputdataSigmaY = cell2mat(textscan(section{1}{2}, '%f%f', 'HeaderLines', 1))
       case 'StressSpectrum Data Tau'
            w_inputdataTau = cell2mat(textscan(section{1}{2}, '%f%f', 'HeaderLines', 1))
        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      case 'Rainflow Data SigmaX'
            r_inputdataSigmaX = cell2mat(textscan(section{1}{2}, '%f%f%f', 'HeaderLines', 1))
            r_inputdata_logic(1,1) = 1;
      case 'Rainflow Data SigmaY'
            r_inputdataSigmaY = cell2mat(textscan(section{1}{2}, '%f%f%f', 'HeaderLines', 1))
            r_inputdata_logic(1,2) = 1;
      case 'Rainflow Data Tau'
            r_inputdataTau = cell2mat(textscan(section{1}{2}, '%f%f%f', 'HeaderLines', 1))
            r_inputdata_logic(1,3) = 1;
       otherwise
          warning('Unknown section ERROR: %s', section{1}{1})  
         
   end
end


Ich hoffe die Frage ist einigermaßen formuliert. lg
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: 28.04.2017, 12:19     Titel:
  Antworten mit Zitat      
Hallo,

bei einem Skript kannst du nichts übergeben.
Du kannst höchstens über uigetfile den Nutzer einen Dateinamen auswählen lassen.

Wenn du an der Befehlszeile etwas übergeben willst, brauchst du eine Funktion. Dabei darauf achten, dass alle Eingabeargumente als Zeichenketten ankommen, d.h. Zahlen müssen ggf. konvertiert werden.

Üblicherweise macht man da dann eine graphische Oberfläche, über die der Code angesteuert wird, und kompiliert diese.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 41
Anmeldedatum: 21.11.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.04.2017, 14:47     Titel: Frage @Harald
  Antworten mit Zitat      
Ok, verstehe.

Wenn ich jetzt mein .m_File in eine Funktion umwandle mit:

Code:
function [ result ] = rainflow_spectrum(Input_File)
wholecontent = fileread(Input_File);
%Code....
end


Diese Funktion dann mittels deploytool in eine standalone exe umwandle und diese exe dann im DOS Eingabe-Fenster eine .txt übergeben möchte... Wie funktioniert das?
Geht das dann mit dem uigetfile-Befehl? Wenn ja wie? Ich bin aus deinem Link nicht schlau geworden... Sorry :/
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: 28.04.2017, 14:52     Titel:
  Antworten mit Zitat      
Hallo,

wenn du die Funktion so schreibst, kannst du die .exe aufrufen mit
rainflow_spectrum datafile

Alternativ kannst du den Nutzer den Dateinamen interaktiv auswählen lassen statt ihn zu übergeben.
Code:
[fname, fpath] = uigetfile;
wholecontent = fileread( fullfile(fpath, fname) );


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

Forum-Anfänger

Forum-Anfänger


Beiträge: 41
Anmeldedatum: 21.11.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.04.2017, 15:13     Titel: @Harald
  Antworten mit Zitat      
Mit interaktiv auswählen meinen Sie, dass sich der Daten-Explorer öffnet und ich dann, die jeweilige Datei auswählen kann, die dann im fileread eingelesen wird? Bei mir ist aber keine .txt auswählbar. :/

Der Datei Name den ich übergeben will ist meine .txt-Datei.

Code:
[fname, fpath] = uigetfile;
wholecontent = fileread( fullfile(fpath, fname) );
Private Nachricht senden Benutzer-Profile anzeigen
 
Mueller
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 41
Anmeldedatum: 21.11.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.04.2017, 15:24     Titel: @Harald
  Antworten mit Zitat      
Code:
[filename, pathname] = uigetfile('*.txt', 'Pick a text file');
 if isequal(filename, 0)
 disp('User selected ''Cancel''')
  else
 disp(['User selected ', fullfile(pathname, filename)])
  end
%[fname, fpath] = uigetfile;
wholecontent = fileread( fullfile(fpath, fname) );


Habe es einmal so umgeschrieben
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: 28.04.2017, 15:24     Titel:
  Antworten mit Zitat      
Hallo,

funktioniert dies direkt in MATLAB?
Ist in dem Fenster Filter rechts unten richtig gesetzt?
Ist vielleicht in dem Verzeichnis, in dem der Dialog startet, keine .txt-Datei (--> Verzeichnis wechseln)

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 41
Anmeldedatum: 21.11.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.04.2017, 16:08     Titel: @Harald
  Antworten mit Zitat      
Es funktioniert. Danke.
Habe diesen Code verwendet.

Code:
[filename, pathname] = uigetfile('*.txt', 'Wähle eine .txt-Datei');
 if isequal(filename, 0)
 disp('User selected ''Cancel''')
  else
 disp(['Folgende Rainflow Woehler Input .txt Datei wurde gewählt', fullfile(pathname, filename)])
  end
%[fname, fpath] = uigetfile;
wholecontent = fileread( fullfile(pathname, filename) );
Private Nachricht senden Benutzer-Profile anzeigen
 
Mueller
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 41
Anmeldedatum: 21.11.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.04.2017, 16:12     Titel: @Harald letzte Frage
  Antworten mit Zitat      
Zitat:
Wenn du an der Befehlszeile etwas übergeben willst, brauchst du eine Funktion. Dabei darauf achten, dass alle Eingabeargumente als Zeichenketten ankommen, d.h. Zahlen müssen ggf. konvertiert werden.



Ja, ich habe eine Funktion daraus gemacht.
Code:
function [ result ] = rainflow_spectrum(Input_File)


Mit welchen Befehl kann ich jetzt im DOS diese exe starten und dieser exe einen Übergabeparameter übergeben? Es geht mir jetzt nur um den DOS Command Smile
Das wäre jetzt die letzte Frage. Danke Ihnen. Schönes Wochenende 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: 28.04.2017, 19:16     Titel:
  Antworten mit Zitat      
Hallo,

siehe 15:52 (fettgedruckt), und ebenfalls ein schönes Wochenende.

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.