Defining my objective function using vector of variables for lsqnonlin

2 visualizaciones (últimos 30 días)
Abdelwahab Afifi
Abdelwahab Afifi el 12 de Mayo de 2020
Editada: Sameer el 4 de Jun. de 2025
I wanna use lsqnonlin for estimating vector of variables of length 6
function F = myfun()
global X % regression matrix of (nx6)
global Y % output vector (nx1)
F = Y - ( w(1)*X(:,1) + w(2)*X(:,2) + w(3)*X(:,3) + w(4)*X(:,4) + w(5)*X(:,5) + w(6)*X(:,6) );
end
How can I dynamically define my function to adapt with any change in the number of variables (m) when the regression matrix dimesions (nxm) is changed. as follow
F = Y - ( w(1)*X(:,1) + w(2)*X(:,2) + w(3)*X(:,3) + .. + w(m)*X(:,m) );

Respuestas (1)

Sameer
Sameer el 4 de Jun. de 2025
Editada: Sameer el 4 de Jun. de 2025
To make the objective function adaptable to any number of variables (based on the number of columns in the regression matrix), the computation can be written using matrix operations instead of hardcoding each term.
Assuming "X" is an "n × m" regression matrix and "w" is a variable vector of length "m", the function can be written like this:
function F = myfun(w)
global X Y
F = Y - X * w;
end
This way, the function works for any number of variables, as long as the number of columns in "X" matches the length of "w". The key is using matrix multiplication, which automatically handles the summation over all terms.
Hope this helps!

Productos


Versión

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by