필터 지우기
필터 지우기

Not sure what this line of code is doing

조회 수: 1 (최근 30일)
John
John 2015년 12월 27일
답변: Walter Roberson 2015년 12월 27일
I'm trying to translate the following Matlab code into R, and I'm not sure what line 45 is doing. Can someone explain to me what's going on here? How are variable values being assigned? What is fminserach doing?
[R,fval,outf,op]=fminsearch(@(params) eglike(params,data),pinit,optionsfmin);
It's a part of this larger script:
function R=egfit(data, params, options)
% version 2.2 27/02/07
% uses fminsearch instead of fmins
% (c) Yves Lacouture, Universite Laval
[n,m]=size(data);
if min(n,m) > 1
error('First argument must be a vector');
end
if n == 1 %case of a row vector of data
data = data';
n = m;
end
if min(data)<=0 % get rid of zeros and negative numbers
warning('data include zero(s) and/or negative number(s)');
nc=length(find(data<=0));
fprintf('%d values out of %d are truncated\n', nc, n);
data=data(find(data>0));
end
if (nargin > 1 & ~isempty(params)) % explicit starting parameter values set by user
mu=params(1);
sig=params(2);
tau=params(3);
else
tau=std(data).*0.8; % set defaut starting parameter values if not explicit
mu=mean(data)-tau; % uses heuristic values
sig=sqrt(var(data)-(tau^2));
end
if (nargin > 2 & ~isempty(options)) % explicit options values set by user and pass to fmins
opts(1:3)=options(1:3); % termination, function tolerances and maximum number of iterations
else
opts=[ 1.e-4,1.e-4]; % default values for termination and function tolerances
opts(3)=200*length(data); % default max number of iterations
end
%optionsfmin=optimset('TolX',opts(1),'TolFun',opts(2),'MaxIter',opts(3));
% was in version 2.2; should be MaxFunEvals
optionsfmin=optimset('TolX',opts(1),'TolFun',opts(2),'MaxFunEvals',opts(3));
pinit = [mu sig tau]; % put initial parameter values in an array
% [R,opt] = fmins('eglike',pinit,opts,[],data); % based on old function fmins
[R,fval,outf,op]=fminsearch(@(params) eglike(params,data),pinit,optionsfmin);
if (outf<1)
disp(op)
end

답변 (1개)

Walter Roberson
Walter Roberson 2015년 12월 27일

카테고리

Help CenterFile Exchange에서 Interpolation에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by