|
|
Optimisierung von Absorption, Reflexion und Transmission |
|
Anton12 |
Forum-Newbie
|
|
Beiträge: 6
|
|
|
|
Anmeldedatum: 01.02.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 01.02.2015, 20:51
Titel: Optimisierung von Absorption, Reflexion und Transmission
|
|
|
|
|
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
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.
|
|
|
|
|
cvanommer |
Forum-Anfänger
|
|
Beiträge: 32
|
|
|
|
Anmeldedatum: 02.03.15
|
|
|
|
Wohnort: Garching bei München
|
|
|
|
Version: R2015a
|
|
|
|
|
|
Verfasst am: 04.03.2015, 14:06
Titel:
|
|
|
|
|
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:
. 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
|
|
|
Anton12 |
Themenstarter
Forum-Newbie
|
|
Beiträge: 6
|
|
|
|
Anmeldedatum: 01.02.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 04.03.2015, 16:50
Titel:
|
|
Hi!
Hat super geklappt.
Danke nochmals für die tipps.
Ali
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|