How to use fminsearch for least square error minimization?
23 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Muhammad Affan Arif
am 25 Jul. 2021
Kommentiert: Muhammad Affan Arif
am 24 Aug. 2021
Hi everyone,
I am doing a Modal Parameter Estimation problem. I have measured values, and a function for numerical values. There is an error, which I need to minimize. But when I use fminsearch, it says that the dimensions on left hand side don't agree with that of right hand side. Becuase, fminsearch only gives 1x2, while the error (objective function) is 1x269.
I have used the following MATLAB commands:
e=@(uk) (abs(data_1(2561:2819,4))-abs((2i.*Hr.*uk(2).*uk(1).*uk(1))./(((uk(1).^2)-(ws.^2) + 2i.*uk(2).*uk(1).*ws))).^2
fminsearch(e,[413.4,0.0034])
Here, ws = 400:0.155:440
Any suggestions? Thank you for your time.
2 Kommentare
Rik
am 25 Jul. 2021
You need to design a function that returns a scalar. Then fminsearch will adjust the starting guesses to minimize that function.
Akzeptierte Antwort
Rik
am 26 Jul. 2021
Bearbeitet: Rik
am 27 Jul. 2021
I mean your objective function must only return 1 value, regardless of the shape of your data.
This is the standard ordinary least squares cost function. You need to provide a handle to your function, your beta will be determined by fminsearch, and you need to know the true value.
t=linspace(0,2*pi,100);
f=@(beta) sin(beta(1)*t+beta(2));
initial_guess=[1 1];
y_true=linspace(0,10,100);
OLS=@(f,beta,y_true) sum((f(beta)-y_true).^2,'all');
beta_fitted=fminsearch(@(beta) OLS(f,beta,y_true),initial_guess)
Edit: sorry, I missed the squared part of the OLS.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Optimization finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!