fminsearch

Hi, I need to find the best set of paramethers to minimize a chi-squared function. I wrote the function chi.m:
function chi = chi(theta, comp, sumcutmean);
model = theta * comp;
f = 0.0;
for i=1:1936
f = f + (sumcutmean(i) - model(i))^2;
end
chi = f;
end
where theta is 1x4 matrix of paramethers, comp is a 4x1936 matrix, of course model and sumcutmean are 1x1936. I tried to typing fminsearch in several ways, always obtaining errors. What is the correct expression to use?

Respuestas (3)

Taniadi
Taniadi el 3 de Mayo de 2012

0 votos

i think that one of your errors is writing the function. the function should use different name for output variables.
Giuseppe
Giuseppe el 14 de Mayo de 2012

0 votos

Thanks for the answer, but I'm not sure it was the problem. I modified the function:
function [chi] = f(theta, comp, sum1minus589cutmean);
model = theta * comp;
somma = 0.0;
for i=1:1935
somma = somma + (sum1minus589cutmean(i) - model(i))^2;
end
chi = somma;
end
Typing
>> [theta] = fminsearch(@(theta0) f(theta0, comp, sum1minus589cutmean), theta0);
I obtain:
Undefined function 'f' for input arguments of type 'double'.
Error in @(theta0)f(theta0,comp,sum1minus589cutmean)
Error in fminsearch (line 191) fv(:,1) = funfcn(x,varargin{:});
Taniadi
Taniadi el 15 de Mayo de 2012

0 votos

I think that you can try to save your file using the filename "f.m" (equating your function name in function definition". And try to solve by using : theta = fminsearch(@f, guess,[],parameter). where parameter is list of parameters you try to include.

1 comentario

Walter Roberson
Walter Roberson el 15 de Mayo de 2012
Adding the parameters at the end of the fminsearch() call is not documented as a possibility. Instead, using function handles and anonymous functions is recommended.

Iniciar sesión para comentar.

Categorías

Etiquetas

Preguntada:

el 3 de Mayo de 2012

Community Treasure Hunt

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

Start Hunting!

Translated by