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

Erstellen einer Ausführdatei mit verschiedenen Optionen

 

rappi
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 02.07.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.07.2013, 16:17     Titel: Erstellen einer Ausführdatei mit verschiedenen Optionen
  Antworten mit Zitat      
Hallo,

ich bin matlab neuling und habe folgendes problem:
ich möchte Funktionen mit verschiedenen Algorithmen testen/optimieren. dabei habe ich für jeden algorithmus eine m. file. Das heißt, ich muss wenn ich Algorithmus A ausführen will A.m ausführen, für B gilt gleiches. Nun möchte ich ein Programm schreiben, dass verschiedene Abfragen beinhaltet, z.b.:

Enter the desired algorithm
Enter the single or multi for single or multiobjective test problem

Außerdem würde ich gern in diese Datei verschiedene Auswertungsoptionen eingliedern, die ich an und ausschalten kann(dies muss nicht interaktiv geschehen, wie die abfragen) wie Laufzeit, anzahl funktionsaufrufe, Standardabweichung. oder eine übergabe von Startwerten.

Wie könnte da eine Struktur aussehen?

Ich habe momentan so angefangen:

Code:

Algorithm = input('Enter the desired Algorithm:\n 1. A \n 2. B \n');
Optimization = input('Enter single or multi for single- or multiobjective testproblem\n');

switch Algorithm
    case 'A'
        switch Optimization
            case 'single'
                run A_single.m                
            case 'multi'
                run A_multi.m                    
        end
       
    case 'B'
 switch Optimization
            case 'single'
               
                run B_single.m                
            case 'multi'
               
                run B_multi.m        
 end
end
 


Allerdings funktioniert das so nicht und mir fehlt natürlich noch die Umsetzung der Auswertungsoptionen.
Bin dankbar für jede Hilfe!
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 02.07.2013, 16:22     Titel:
  Antworten mit Zitat      
Hallo,

was genau funktioniert noch nicht? Insbesondere: was soll passieren, und was passiert stattdessen?

Wenn das anständig zu nützen sein soll, würde ich eine GUI dafür machen.
Zur Anwendung verschiedener Algorithmen eignen sich Function Handles sehr gut. Dazu müssen die einzelnen Algorithmen aber als Funktionen implementiert sein.

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

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 02.07.2013, 16:24     Titel:
  Antworten mit Zitat      
nunja wenn du rückgabe argumente willst würde ich anstatt eines m file skript eine funktio schrieben die als eingabe werte deine auswahl enthällt und als rückgabe werte das gewünschte zurück giebt. die auswahl kann man dann mit switch oder if else etc einbaun
Private Nachricht senden Benutzer-Profile anzeigen
 
rappi
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 02.07.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.07.2013, 09:47     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Hallo,

was genau funktioniert noch nicht? Insbesondere: was soll passieren, und was passiert stattdessen?

Wenn das anständig zu nützen sein soll, würde ich eine GUI dafür machen.
Zur Anwendung verschiedener Algorithmen eignen sich Function Handles sehr gut. Dazu müssen die einzelnen Algorithmen aber als Funktionen implementiert sein.

Grüße,
Harald


Hi Harald,
Danke für die Antwort.

wenn ich z.b. das Programm ausführe, und als erste auswahl A eintippe kommt der fehler "Cannot find an exact (case-sensitive) match for 'A'". Das programm soll sich die eingabe merken und in den entsprechenden Case springen und dann nach eventuell nachfolgenden abfragen die funktionen aufrufen.
Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

wenn die Eingabe in Input als String aufgefasst werden soll, muss man die Option 's' verwenden. Siehe auch
Code:


Ich würde mir aber wie gesagt überlegen, ob dieser Ansatz in der Form überhaupt zielführend ist. GUIs sind deutlich nutzerfreundlicher / eleganter.

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

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 02.07.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.07.2013, 11:12     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Hallo,

wenn die Eingabe in Input als String aufgefasst werden soll, muss man die Option 's' verwenden. Siehe auch
Code:


Ich würde mir aber wie gesagt überlegen, ob dieser Ansatz in der Form überhaupt zielführend ist. GUIs sind deutlich nutzerfreundlicher / eleganter.

Grüße,
Harald


Danke für die Antwort.
Ich brauch nicht zwangsweise eine GUI, da ich das nur für Auswertungen im Zuge meiner wissenschaftlichen Arbeit benötige. Also wenn ich das bedienen kann reicht's Wink.
Hab das jetzt in function handles umgewandelt, immernoch mit der display/input variante.

Würde die Auswahl jetzt gerne erweitern, dass auch alle Algorithmen ausgeführt werden können, dazu habe ich mir folgendes überlegt:

Code:

 Algorithm = input('Enter the desired Algorithm:\n 1. A \n 2. B \n 3. All\n','s')
Optimization = input('Enter single or multi for single- or multiobjective testproblem\n','s');
switch Algorithm
    case {'A, 'All'}
        switch Optimization
            case 'single'
                 % Hier Optionen
                    tic
                    [obj con] = A(objFunc,xMin,xMax,X,options,ObjFuncAddData); % evaluiere Funktion
                    toc
end
case {'B, 'All'}
        switch Optimization
            case 'single'
usw.
 


Wie kann ich bezwecken, dass durch den Input von All, nicht nur Algorithmus A ausgeführt wird, wie in meinem Beispiel?
Beim All in case B steht als Matlab hinweis "The case value 'All' is a duplicate".
Ich wünsche mir, dass er zuerst A ausführt und danach B.

Vielen Dank schonmal für Tipps
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: 04.07.2013, 14:31     Titel:
  Antworten mit Zitat      
Hallo rappi,

Code:
runA = strcmp(Algorithm, 'A') || strcmp(Algorithm, 'All');
runB = strcmp(Algorithm, 'B') || strcmp(Algorithm, 'All');

if runA
        switch Optimization
            case 'single'
                 % Hier Optionen
                    tic
                    [obj con] = A(objFunc,xMin,xMax,X,options,ObjFuncAddData); % evaluiere Funktion
                    toc
end

if runB
        switch Optimization
            case 'single'
usw.
 

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

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 02.07.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.07.2013, 15:02     Titel:
  Antworten mit Zitat      
Jan S hat Folgendes geschrieben:
Hallo rappi,

Code:
runA = strcmp(Algorithm, 'A') || strcmp(Algorithm, 'All');
runB = strcmp(Algorithm, 'B') || strcmp(Algorithm, 'All');

if runA
        switch Optimization
            case 'single'
                 % Hier Optionen
                    tic
                    [obj con] = A(objFunc,xMin,xMax,X,options,ObjFuncAddData); % evaluiere Funktion
                    toc
end

if runB
        switch Optimization
            case 'single'
usw.
 

Gruß, Jan


Klappt, bedankt!
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.