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

Funktionsterm erweitern

 

PengPeng

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.01.2012, 19:42     Titel: Funktionsterm erweitern
  Antworten mit Zitat      
Hallo zusammen Smile

Ich bin bei Matlab auf ein Problem gestoßen, bei dem ich einfach nicht weiter komme!

Ich benutze die fmincon Funktion (Optimization Toolbox) um bei einer Funktion unter Nebenbedingungen ein Minimum zu finden. Eigentlich funktioniert alles super. Hier ein Ausschnitt:

Code:

x0=[0;0;0]; %Startwert
A=[2 3 0];
b=300;

Aeq=[];
beq=[];

VLB=[20;20;20]; %Untere Grenze (für x(1), x(2) etc)
VUB=[100;100;100]; %Obere Grenze (für x(1), x(2) etc)

function=@(x) 0.11*x(1) + 0.11*x(2)+ 0.11*x(3);

[x,fval]=fmincon(function,x0,A,b,Aeq,beq,VLB,VUB);
 


Der Array x ist hierbei aber kein zuvor definiertes Array mit Werten! fmincon findet nun für x(1), x(2) und x(3) einen Minimum, das der Gleichung A*x = b genügt. Nach der Ausführung von fmincon können die Werte von x benutzt werden.

Das ganze funktioniert soweit. Problem ist nun folgendes. Die Anzahl der Variablen in function ist hier nun auf 3 Elemente statisch festgelegt, soll aber eigentlich erst zur Laufzeit des Skitps festgelegt werden.

Im Endeffekt will ich diese Funktion
Code:
function=@(x) 0.11*x(1) + 0.11*x(2)+ 0.11*x(3);
zur Laufzeit erweitern.

Ich habe dann sowas probiert wie
Code:

function=@(x) 0.11*x(1);
               
for j = 2:3

      function= function + @(x) 0.11*x(j);
end
 


was aber nicht funktioniert.

Vielleicht kann mir ja jemand von euch helfen. Bin gerade echt ratlos!

Viele Grüße
Daniel


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 12.01.2012, 01:20     Titel: Re: Funktionsterm erweitern
  Antworten mit Zitat      
Hallo PengPeng,

"function" ist ein reserviertes Symbol in Matlab. Versuche es zunächst mit einem anderen Namen.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.01.2012, 08:56     Titel:
  Antworten mit Zitat      
in meinem code heißt die funktion fun4. hab das nur hier so geschrieben. irgendwie doof, ich weiß Smile

jedenfalls liegt es nicht daran. wie gesagt funktioniert der code ja, ist aber zu unflexibel.
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 12.01.2012, 10:05     Titel:
  Antworten mit Zitat      
hmm ich denke da sponaten an recursive funktion aber ob das so klappt bin ich mir grade nicht sicher
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.