gusucode.com > 《模式识别与智能计算》matlab源代码 > 《模式识别与智能计算》matlab源代码/《模式识别与智能计算》部分函数的源程序/书程序/第13章/grayabsasso.m

    function y=grayabsasso(varargin)  

num=length(varargin);
for i=1:num     
    a=find(isnan(varargin{i}));
   while ~isempty(a)
          for j=1:length(a)
            if ~isnan(varargin{i}(a(1)+j))
                m=round(mean([a(1)-1 a(1)+j]));
                varargin{i}(m)=mean([varargin{i}(a(1)-1),varargin{i}(a(1)+j)]);
             break
            else
             continue
            end
          end
        a=find(isnan(varargin{i}));
   end
   b=varargin{i}(1);
   for j=1:length(varargin{i})
     varargin{i}(j)=varargin{i}(j)-b;
   end
    s(i)=abs(sum(varargin{i}(2:end-1))+0.5*varargin{i}(end));
end
for i=2:num
    si(i)=abs(sum(varargin{i}(2:end-1)-varargin{1}(2:end-1))+0.5*(varargin{i}(end)-varargin{1}(end)));
    y(i)=(1+s(1)+s(i))/(1+s(1)+s(i)+si(i));
end
y(1)=[];