From 9a5fc0011e46655dffb9edc58411a32a319cc0cc Mon Sep 17 00:00:00 2001 From: Jacob Smith <jacob.smith@atl.frb.org> Date: Thu, 5 Aug 2010 12:43:11 -0400 Subject: [PATCH] fixed csminwel to be able to take anonymous functions as well --- MatlabFiles/csminwel.m | 6 +++++- MatlabFiles/numgradcd.m | 17 ++++++++++++++--- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/MatlabFiles/csminwel.m b/MatlabFiles/csminwel.m index fd4c78f..2a954a8 100755 --- a/MatlabFiles/csminwel.m +++ b/MatlabFiles/csminwel.m @@ -40,7 +40,11 @@ snit=100; % tailstr=[ ',P' num2str(i) tailstr]; % stailstr=[' P' num2str(i) stailstr]; %end -f0 = eval([fcn '(x0,varargin{:})']); +if ischar(fcn) + f0 = eval([fcn '(x0,varargin{:})']); +else + f0 = fcn(x0,varargin{:}); +end %ARGLIST %f0 = feval(fcn,x0,P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13); % disp('first fcn in csminwel.m ----------------') % Jinill on 9/5/95 diff --git a/MatlabFiles/numgradcd.m b/MatlabFiles/numgradcd.m index a7b6439..b922e97 100755 --- a/MatlabFiles/numgradcd.m +++ b/MatlabFiles/numgradcd.m @@ -26,7 +26,11 @@ x0 = x0(:); %for i=nargin-3:-1:1 % tailstr=[ ',P' num2str(i) tailstr]; %end -f0 = eval([fcn '(x0,varargin{:})']); +if ischar(fcn) + f0 = eval([fcn '(x0,varargin{:})']); +else + f0 = fcn(x0,varargin{:}); +end %f0 = eval([fcn '(x0' tailstr]); % ** initializations @@ -60,8 +64,15 @@ badg=0; i = 0; while i ~= n i = i+1; - fp = eval([fcn '(argplus(:,i),varargin{:})']); - fm = eval([fcn '(argminus(:,i),varargin{:})']); + if ischar(fcn) + + fp = eval([fcn '(argplus(:,i),varargin{:})']); + fm = eval([fcn '(argminus(:,i),varargin{:})']); + else + + fp = fcn(argplus(:,i),varargin{:}); + fm = fcn(argminus(:,i),varargin{:}); + end % fp = eval([fcn '(argplus(:,i)' tailstr]); % fm = eval([fcn '(argminus(:,i)' tailstr]); g0 = fp - fm; -- GitLab