gusucode.com > 《模式识别与智能计算》matlab源代码 > 《模式识别与智能计算》matlab源代码/《模式识别与智能计算》部分函数的源程序/书程序/第2章/clus_potential.m
function results=clus_potential(varargin) r1=length(varargin)-1; test=varargin{end}; num=nchoosek(1:r1,2); Training={varargin{1:end-1}}; y=cell(size(num,1),1); for i=1:size(num,1) y{i}=f(Training{num(i,1)},Training{num(i,2)}); end for kk=1:size(test,1) for i=1:length(y) c=size(y{i},1); t=0; for j=1:c m=k(y{i}(j,1:end-1),test(kk,:)); t=t+y{i}(j,end)*m; end if t>0 result(i)=1; else result(i)=0; end temp(i)=num(i,1).*result(i)+num(i,2).*~result(i); end results(kk)=mode(temp,2); end function y=f(x1,x2) r1=size(x1,1);r2=size(x2,1); xx=[x1;x2]; y=[x1(1,:) 1];k1=0; c=size(y,1); flag=1; while k1<(r1+r2) if flag>50 break elseif flag==1 s=2; else s=1; end for i=s:r1+r2 t=0; for j=1:c m=k(y(j,1:end-1),xx(i,:)); t=t+y(j,end)*m; end if i<=r1 if t>0 k1=k1+1; else y=[y;xx(i,:) 1];k1=0; end else if t<0 k1=k1+1; else y=[y;xx(i,:) -1];k1=0; end end c=size(y,1); end flag=flag+1; end function y=k(x1,x2) y=exp(-sum((x1-x2).^2));