function editfit(n,name,eq)
%EDITFIT Edit a user defined fit
% EDITFIT edit a new user defined fit.
%
% EDITFIT(N) edits the fit #N.
%
% EDITFIT(N,NAME,EQ) sets the name NAME and the equation EQ of the user
% defined fit #N.
%
% EDITFIT('reset') deletes the user defined fits.
% EDITFIT('list') lists the user defined fits
%
% Example: editfit(3,'myexp','a*exp(-x/tau); a=0.1; tau=100;');
%
% See also LOADFIT, EFMENU, EZFIT.
% F. Moisy, moisy_at_fast.u-psud.fr
% Revision: 1.20, Date: 2006/02/02
% This function is part of the EzyFit Toolbox
% History:
% 2006/01/12: v1.00, first version.
% 2006/01/19: v1.10, syntax changed. Now does not ask for the fit number.
% 2006/02/02: v1.20, use a new mat-file for user defined fits
% directory where the ezyfit toolbox is installed:
efroot=fileparts(mfilename('fullpath'));
userfitfile=[efroot filesep 'userfit.mat'];
% option 'reset' or 'list':
if (nargin==1) && (~isnumeric(n))
if strcmp(n,'reset'),
clear userfit;
if exist(userfitfile,'file'),
delete(userfitfile);
end;
loadfit('user');
return;
elseif strcmp(n,'list'),
userfit=loadfit('user');
for i=1:length(userfit),
disp(['Fit #' num2str(i) ': ' userfit(i).name]);
disp([' ' userfit(i).eq]);
end;
return;
end;
end;
userfit=loadfit('user');
% 3 arguments: sets the fit #n to its new definition.
if (nargin==3),
if n<=(length(userfit)+1),
userfit(n).name=name;
userfit(n).eq=eq;
save(userfitfile,'userfit');
efmenu; % refresh the ezyfit menu
return;
else
error('Wrong fit number.');
end;
end;
% no argument: creates a new fit.
if (nargin==0)
n=length(userfit)+1;
userfit(n).name = ['fit' num2str(n)];
userfit(n).eq = 'a*x+b*x^2 ; a=1 ; b=0.1';
end;
if n>length(userfit),
error('Wrong fit number.');
end;
answer = inputdlg({'Name (enter an empty string to delete this fit):',...
'Equation y(x) = a*x + b*x^2...; a=1; ...'},...
['Edit User Fit #' num2str(n)], 1,...
{userfit(n).name,userfit(n).eq});
if ~isempty(answer)
if isempty(answer{1}), % deletes this fit
userfit = userfit([1:(n-1) (n+1):end]);
else
userfit(n).name=answer{1};
userfit(n).eq=answer{2};
end;
save(userfitfile,'userfit');
efmenu; % refresh the ezyfit menu
else
return;
end;