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

Optimisierung von Absorption, Reflexion und Transmission

 

Anton12
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 01.02.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.02.2015, 21:51     Titel: Optimisierung von Absorption, Reflexion und Transmission
  Antworten mit Zitat      
Hi!

Ich bin neu hier und habe nicht sehr viel Erfahrung mit MATLAB. Mein Problem ist folgende:

Ich habe eine Matlab Simulation bekommen, die ein Multilayer system simuliert. Dabei kann man Material, Schichtdicken und Wellenlängenbereich des einfallenden Lichtes auswählen und das Programm errechnet daraus die Absorption, Reflexion und Transmission des gesamten multilayers.

Meine Aufgabe is es nun die 8 Schichtdicken so zu verändern, dass die Absorption und Transmission maximal, aber die Reflexion minimal wird. Alle drei Größen stehen als (N x 1) double in einem mat Datei zusammen mit der Wellenlänge (die eine 1 x N Vektor ist).

Ich weiß, dass ich dazu am fminunc benutzen sollte, da 8 for-Schleifen doch sehr zeitaufwendig wären. Mein Ansatz
Code:

Absorbfun=@(x) load('multilayer','absorption')
d1=1;
d10=5;
x0=[0.01;0.01;0.01;0.01;0.01;0.01;0.01;0.01];
[x,fval]=fminunc(@(x) Absorbfun(x,d1,d10), x0);
x=load('multilayer.emp','ep');
input=Input(fileEmp,fileSim);
emp=Empilement(input);
sim=Simulation(input);
sim:runSim(emp,fileResult,nameResult)
 


Allerding klappt das nicht so. In Worten ausgesprochen:

Ich möchte meine Funktion (z.B. Absorption) maximieren. Die Variable x ist die Schichtdicke, welche in meinem Fall ein array wäre. Aber um die Schichtdicke zu verändern, muss ich erst die Datei 'Only_Perovskite.emp' öffnen (Ich habe schon eine Simulation gestartet, um die Werte als Referenz zu benutzten). Nun müssen die 'ep(..)'=x verändert werden und die Simulation gestartet werden. Und so weiter...

Ich hoffe, dass jemand mir helfen kann.

Danke nochmals.
Private Nachricht senden Benutzer-Profile anzeigen


cvanommer
Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 02.03.15
Wohnort: Garching bei München
Version: R2015a
     Beitrag Verfasst am: 04.03.2015, 15:06     Titel:
  Antworten mit Zitat      
Hallo Anton,

Ja stimmt, fminunc ist ein Algorithmus die aus einer Funktion mehreren Variablen das Lokale minimum raus findet. (um maximum aus zu rechnen soll man die variable die man ausrechnet zu multiplizieren mit -1). Um diese m-file runnen würde ich vorschlagen:

1. Deine Absorbfun ladet eine Datei aus einer File. Da diese Datei nicht eine Funktion ist, sondern eine Array kann diese durch fminunc nicht benutzt werden. Also erst sollten sie aus Ihre Daten eine Funktion erstellen (mit z.B. die Funktion Quad) wobei in dieser funktion ein variable x steht, welcher ein array ist von 8 zahlen.
2. Folglich haben Sie in der Funktion fminunc stehen:
Code:
Absorbfun(x,d1,d10)
. Da aber Ihre Funktion Absorbfun mit nur ein parameter definiert wird, werden die Parameter d1 und d10 nicht benutzt und werden ein Fehler auslösen.
3. Wenn Sie eine Simulation runnen möchten, dann darf nicht die : benutzt werden, da diese eine array operator ist.

Also ich würde vorschagen, dass Sie erst anfangen mit eine Funktion erstellen die z.B. die Absorption ausrechnet in Abhängikeit der 8 variablen.

Viel Erfolg!
Christiaan
Private Nachricht senden Benutzer-Profile anzeigen
 
Anton12
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 01.02.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.03.2015, 17:50     Titel:
  Antworten mit Zitat      
Hi!

Hat super geklappt.

Danke nochmals für die tipps.

Ali
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 - 2024 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.