Azzera filtri
Azzera filtri

fminsearch

7 visualizzazioni (ultimi 30 giorni)
Giuseppe
Giuseppe il 3 Mag 2012
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?

Risposte (3)

Taniadi
Taniadi il 3 Mag 2012
i think that one of your errors is writing the function. the function should use different name for output variables.

Giuseppe
Giuseppe il 14 Mag 2012
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 il 15 Mag 2012
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 Commento
Walter Roberson
Walter Roberson il 15 Mag 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.

Accedi per commentare.

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by