Verfasst am: 07.11.2018, 14:30
Titel: Fehlermeldung bei fminsearch
Hallo,
ich bin ein Matlab-Neuling und habe ein Skript, das ich mit "fminsearch" optimieren soll. Allerdings bekomme ich jedes Mal folgende Fehlermeldung:
Assignment has more non-singleton rhs dimensions than non-singleton subscripts
Error in fminsearch (line 200)
fv(:,1) = funfcn(x,varargin{:});
Error in kEinsetzen (line 106)
x = fminsearch(AcD,x0,options);
Der Code ist angehängt. Kann mir vielleicht jeamnd helfen? Das wäre sehr nett!
Code:
%Definition der Vektrogröße, damit Dimensionen immer gleich sind
vector_groesse = 100;
%Definition von Lambda, hier 0,4 bis 1 Mikrometer
%für Spektralbereich 0.5 bis 0.7 Mikrometer hier die Werte ändern
lambda_start = .4;
lambda_end = 1;
lx = (lambda_end - lambda_start) / (vector_groesse - 1);
lambda = lambda_start:lx:lambda_end;
%Definition von Phi, hier 0° bis 180°
phi1_start = 0;
phi1_end = 180;
px = (phi1_end - phi1_start) / (vector_groesse - 1);
phi1 = phi1_start:px:phi1_end;
%Definition von d, hier 0 bis 500 Mikrometer
d1_start = 0;
d1_end = 500;
dx = (d1_end - d1_start) / (vector_groesse - 1);
d1 = d1_start:dx:d1_end;
%Definition der ordentlichen und der ausßerordentlichen Brechzahl
n_o = sqrt(1+(0.663044.*lambda.^2)./(lambda.^2-0.0600^2)+(0.517852.*...
lambda.^2)./(lambda.^2-0.1060^2)+(0.175912*lambda.^2)./(lambda.^2-... 0.1190^2)+(0.565380*lambda.^2)./(lambda.^2-8.844^2)+(1.675299*...
lambda.^2)./(lambda.^2-20.742^2));
%Definition der Elemente der Produktmatrix, Matrixelemente rückwärts
%multiplizieren
A = c12 .* c11' + c22 .* c21';
B = c12 .* c31' + c22 .* c41';
B_conj = -conj(B);
A_conj = conj(A);
%Zusammensetzen der Produktmatrix
M = [A B; B_conj A_conj];
%Berechnung der Verzögerung des Systems
Delta_matrix = 2 * atan(sqrt((imag(A)^2 + imag(B)^2)./(real(A)^2 + real(B)^2)));
Delta = Delta_matrix(:);
%Definition von Delta_0
Delta_0 = pi / 2;
%Definition der Funktionen des Integrals
fun1 = @(x)(abs(Delta - Delta_0).^2)*x;
fun2 = @(x) x;
%Definition der Funktion "achromatism degree"
%beschreibt den Unterschied zwischen der Systemverzögerung Delta und
%der Zielfunktion Delta_0, bezogen auf das Spektrum Lambda
AcD = @(x)(sqrt(integral(fun1,lambda_start,lambda_end,'ArrayValued',true)))...
/ (sqrt(integral(fun2,lambda_start,lambda_end,'ArrayValued',true)));
was ist das Ergebnis von AcD? Ich vermute mal ein Array. Für fminsearch muss es aber ein Skalar sein - denn was soll denn sonst optimiert werden?
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Flitzi123
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 15.11.2018, 14:09
Titel:
Ich weiß es ehrlich gesagt nicht mehr so genau und das Skript ist auch veraltet.
Insgesamt funktioniert jetzt der Rest von dem, was ich erreichen muss und habe mal ein absolut vereinfachtes Besipiel zu fminsearch, das auch nicht funktioniert. Vielleicht ist es da leichter mir zu helfen:
Ich habe auch versucht für a und b nur Zahlenwerte als Start vorzugeben, aber beides funktioniert nicht.
Bei der dargestellten Variante bekomme ich als Fehler, dass die Matrixdimensionen nicht übereinstimmen. Aber wenn ich fminsearch auskommentiere, bekomme ich den Fehler nicht, also ist er nicht im f.
Wenn ich nur Zahlen eingebe bekomme ich folgenden Fehler:
Assignment has more non-singleton rhs dimensions than non-singleton subscripts
Was soll denn mit diesem zwei-elementigen Vektor gemacht werden?
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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
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.