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

Funktion aus Skript indiv. durch Befehlsfenster

 

Julia-verzweifelt

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.12.2013, 12:15     Titel: Funktion aus Skript indiv. durch Befehlsfenster
  Antworten mit Zitat      
Hallo,

folgendes Problem:

ich habe ein Skript geschrieben. Ruft man es auf, wird der Nutzer zunächst aufgefordert einige Parameter einzugeben. Funktioniert auch super.

Allerdings, soll die Funktion (z.B. x.^2) die dann im Skript verwendet wird ebenfalls individuell über das Befehlsfenster eingebbar sine

Code:
% Das ist mein Probgramm.

f=input('');

m=input('Geben sie die Schwarmgroesse an:');
D=input('Geben sie die Dimension an:');
c1=input('Geben sie den Parameter c1 ein:');
c2=input('Geben sie den Parameter c2 ein:');
w=input('Geben sie den Parameter w ein:');
it=input('Geben sie die Anzahl der Iterationen die durchgefuehrt werden sollen an:');
abbruch=input('Geben sie ein Abbruchkriterium ein:');

% Partikelinitialisierung &Geschwindigkeitsintitialisierung
p=rand(m,D); % Spaltenzahl = Dimension, Zeilenzahl = Partikelnummer
vel=rand(m,D);

% Auswertung des ursprünglichen Schwarms
value=feval(f,p); % Wert des Schwarms mit f
minvalue(1)=min(value);
globalmin=minvalue(1);

% Initialisierung des lokalen Minimums für jeden Partikel
localp=p; % Position des lokalen Minimums
localvalue=value; % Wert des lokalen Minimums

% Finde besten Partikel in Eingangspopulation
[globalvalue,indx]=min(value);
globalp=p(indx,:);

iteration = 0; % Zaehler

 if iteration<it || abs(globalvalue-localvalue)<abbruch
    iteration=iteration+1;
   
    % Aktualisiere Geschwindigkeit
    r1=rand(m,D);
    r2=rand(m,D);
   
    vel=w*vel+c1*r1.*(localp-p)+c2*r2.*(globalp-p);
   
    p=p+vel; %Update Partikelposition
   
    value=feval(f,p); % Update Schwarmwert
   
    % Update beste lokale Position für jeden Partikel
    bettervalue=value<localvalue;
    localvalue=localvalue.*not(bettervalue)+value.*bettervalue;
    localp(find(bettervalue),:)=p(find(bettervalue),:);
   
    %update globalp
    [k,l]=min(localvalue);
    if k<globalvalue
        globalp=p(l,:);
        indx=l;
        globalvalue=k;
       
    end
 end

 


das Problem ist, wenn ich die Funktion über den input-Befehl eingebe, bekomme ich die Fehlermeldung, dass es sich nicht um einen string oder handle handelt.
gebe ich die Funktion direkt im skript mit f=inline('...') läufts auch... aber dann muss ich ja schon eine spezielle Funktion vorgeben


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 03.12.2013, 12:29     Titel:
  Antworten mit Zitat      
Code:

wenn man strings einlesen will muss man ihm das auch sagen ^^
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Julia-verzweifelt

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.12.2013, 13:04     Titel:
  Antworten mit Zitat      
Die Hilfe hab ich bereits gelesen. Hat mir aber bisher nicht weitergeholfen. ich möchte als Funktion f z.B. (x-1).^2 über das Befehlsfenster eingeben können
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 03.12.2013, 13:20     Titel:
  Antworten mit Zitat      
Zitat:
Hat mir aber bisher nicht weitergeholfen.

aha. das sagt mir nicht viel. was hast du denn versucht ? mit input und eval und bekanntem variablen namen geht das eigentlich.
_________________

richtig Fragen
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.