function c=editcoeff(f)
%EDITCOEFF  Edit the coefficients of a fit
%   EDITCOEFF opens the Matlab's Array Editor to edit the coefficients
%   of the last fit (which is stored in the variable 'lastfit'). This may
%   be useful to copy/paste the fit coefficients into a spreadsheet
%   (see the setting 'coeffarray' in FITPARAM to change the row/column
%   display).
%
%   EDITCOEFF is also available from the item 'Edit Fit Coefficients' in
%   the EzyFit menu, and can be automatically called after each fit (see
%   the setting 'editcoeffmode' in FITPARAM).
%
%   EDITCOEFF(F) opens the Matlab's Array Editor to edit the coefficients
%   of the fit F. (F is a fit structure as returned by EZFIT or SHOWFIT). 
%
%   C = EDITCOEFF(...) returns a 2xN cell array, containing the
%   coefficients names and values.
%
%   Example:
%     plotsample('power');
%     f = ezfit('power');
%     editcoeff(f);
%
%   See also EZFIT, SHOWFIT, EFMENU, FITPARAM, MAKEVARFIT, OPENVAR.

%   F. Moisy, moisy_at_fast.u-psud.fr
%   Revision: 1.00,  Date: 2006/02/09
%   This function is part of the EzyFit Toolbox

% History:
% 2006/02/09: v1.00, first version.


% if no input argument, use the last fit, which is stored
% in the variable lastfit in the 'base' workspace:
if nargin==0,
    if evalin('base','exist(''lastfit'',''var'')')
        f=evalin('base','lastfit');
    else
        errordlg('No existing fit coefficients. First fit a curve.',...
            'Edit Fit Coefficients','on');
        return;
    end;
end;


if exist('fitparam.m','file'),
    fp=fitparam;
else
    error('No fitparam file found.');
end;


% c is a 2xN cell array containing the parameter
% names and the parameter values
for i=1:length(f.param);
    c{i,1}=f.param{i};
    c{i,2}=f.m(i);       
end;

switch fp.corrcoefmode
    case 'r'
        c{length(f.param)+1,1}='R';
        c{length(f.param)+1,2}=f.r;
    case 'r2',
        c{length(f.param)+1,1}='R^2';
        c{length(f.param)+1,2}=f.r^2;
end;

% displays the coeff in row or in column:
if ~strcmpi(fp.coeffarray,'row'),
    c=c';
end;

% creates a variable called 'FitCoefficients' in the matlab 'base' workspace
% (this is required for using openvar)
assignin('base','FitCoefficients',c)

% calls the Array Editor with this variable "FitCoefficients".
openvar('FitCoefficients');

if nargout==0
    clear c
end;