例1 设论域U={x1,x2,x3,x4,x5}上的三个模糊模式分别为A=(0.7,0.5,0.2,0.4),B=(0.8,0.3,0.4,0.2),C=(0.6,0.4,0.5,0.3),

试判别A和B中,哪个和C最贴近。

解:按照“格贴近度”,有如下计算:

   

 

由贴近度可知,B比A更贴近于C。

用matlab解决的代码如下:

%建立fuzzy_mssb.m文件

function[C]=fuzzy_mssb(model,A,B)         %模糊模式识别
C=[];
[m,n]=size(A);%A中按行容纳待识别模式
s=length(B);%B是标准模式
if(n~=s)
     disp('两个向量的维数不一致');
else
     if(model==1)                        %格贴近度
         for(i=1:m)
             x=max(min(A(i,:),B));
             y=min(max(A(i,:),B));
             C(1,i)=(x+(1-y))/2;
         end    
     elseif(model==2)                    %最小最大贴近度
            for(i=1:m)
               x=sum(min(A(i,:),B)); %取小累加
               y=sum(max(A(i,:),B)); %取大累加
               C(1,i)=x/y;
            end
      elseif(model==3)                   %最小平均贴近度
            for(i=1:m)
               x=2*sum(min(A(i,:),B));
               y=sum(A(i,:)+B);
               C(1,i)=x/y;
            end
      elseif(model==4)                   %海明贴近度
            for(i=1:m)
                C(1,i)=1-sum(abs(A(i,:)-B))/n;
            end
      elseif(model==5)                   %欧几里得贴近度
            for(i=1:m)
                C(1,i)=1-sqrt((A(i,:)-B)*(A(i,:)-B)')/sqrt(n);
            end
      else
            disp('模型赋值不当');
      end
 end
end
%%
---------------------------------------------------------------------------------------

在matlab的命令行窗口,输入:

>> A=[0.7 0.5 0.2 0.4;0.8 0.3 0.4 0.2];   %模式A和B
B=[0.6 0.4 0.5 0.3];                   %模式C
fuzzy_mssb(1,A,B)  % model=1表示调用格贴近度函数

-----------------------------------------------------------------------------------------
得到结果:

ans =

    0.6000    0.6500

解释如下:

  = 0.6      、 =0.65

 即A与C的贴近度为0.6, B与C的贴近度为0.65,

    那么,B比A更贴近于C。

 

更多推荐