www.gusucode.com > Matlab动力系统和时间序列分析工具箱 > Matlab动力系统和时间序列分析工具箱/lab432/toolbox/da/normalize_da_coefficients.m

    function da=normalize_da_coefficients(da,coef_name);
% NORMALIZE_DA_COEFFICIENTS normalize discriminant analysis coefficients
% da - discriminant model
% Using: normalize_da_coefficients; - GUI-mode 
% normalize_da_coefficients(da,coef_name); - batch mode
% resulting coefficients are: = <coefficients set>/coef(coef_name)
% example: normalize_da_coefficients(da,'c1');
%
% last modified 7.2.05


str=da.coefficients_txt;
str=[{'c0 (-discr. fun.)'} str];
if nargin<2
	[selection,ok] = listdlg('PromptString','Normalize on:',...
                    'SelectionMode','single','ListString',str);
else
    ok=0;
    for i=1:length(str)
        if strcmp(coef_name,str{i})
            ok=1;
            selection=i;
            break
        end
    end
end
                
if ok
    if selection==1
        for i=1:size(da.coeff_data,2)
            da.coeff_data(:,i)=-da.coeff_data(:,i)./da.discriminant_func;
        end
        da.discriminant_func=ones(size(da.discriminant_func));
    else
        da.discriminant_func=da.discriminant_func./da.coeff_data(:,selection-1);
        for i=1:size(da.coeff_data,2)
            if i~=selection-1
                da.coeff_data(:,i)=da.coeff_data(:,i)./da.coeff_data(:,selection-1);
            end
        end
        da.coeff_data(:,selection-1)=ones(size(da.coeff_data(:,selection-1)));
    end
end

time=da.time;
Coeff_data=da.coeff_data;
Fisher=da.fisher;
Discr_func=da.discriminant_func;

IX=[];
for i=1:length(time)
    if (~all(isfinite(Coeff_data(i,:))))|(~isfinite(Discr_func(i)))
        IX=[IX i];
        fprintf('infinty values removed at time %d\n',time(i));
    end
end

if ~isempty(IX)
    Coeff_data(IX,:)=[];
    Fisher(IX)=[];
    time(IX)=[];
    Discr_func(IX)=[];
end

da.time=time;
da.coeff_data=Coeff_data;
da.fisher=Fisher;
da.discriminant_func=Discr_func;