⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 f_jlr.m

📁 模糊矩阵分析中建立模糊相似矩阵(标定)的各种方法的MATLAB程序
💻 M
字号:
function[R]=F_JlR(cs,X)
%%模糊聚类分析建立模糊相似矩阵
%%X,数据矩阵
%%cs=1,数量积法
%%cs=2,夹角余弦法
%%cs=3,相关系数法
%%cs=4,指数相似系数法
%%cs=5,最大最小法
%%cs=6,算术平均最小法
%%cs=7,几何平均最小法
%%cs=8,直接欧几里得距离法
%%cs=9,直接海明距离法(绝对值减数法)
%%cs=10,直接切比雪夫距离法
%%cs=11,倒数欧几里得距离法
%%cs=12,倒数海明距离法(绝对值倒数法)
%%cs=13,倒数切比雪夫距离法
%%cs=14,指数欧几里得距离法
%%cs=15,指数海明距离法(绝对值指数法)
%%cs=16,指数切比雪夫距离法
[n,m]=size(X);%%获得矩阵的行列数
R=[];
if(cs==1)maxM=0;pd=0;%%数量积法
  for(i=1:n)for(j=1:n)if(j~=i)x=0;
    for(k=1:m)x=x+X(i,k)*X(j,k);end
    if(maxM<x)maxM=x;end
  end;end;end
  if(maxM<0.000001)return;end
  maxM=maxM+1;
  for(i=1:n)for(j=1:n)
    if(i==j)R(i,j)=1;    
    else R(i,j)=0;
      for(k=1:m)R(i,j)=R(i,j)+X(i,k)*X(j,k);end
      R(i,j)=R(i,j)/maxM;
      if(R(i,j)<0)pd=1;end
    end
  end;end
  if(pd)for(i=1:n)for(j=1:n)R(i,j)=(R(i,j)+1)/2;end;end;end
  elseif(cs==2)%%夹角余弦法
    for(i=1:n)for(j=1:n)xi=0;xj=0;
       for(k=1:m)xi=xi+X(i,k)^2;xj=xj+X(j,k)^2;end
       s=sqrt(xi*xj);R(i,j)=0;
       for(k=1:m)R(i,j)=R(i,j)+X(i,k)*X(j,k);end
       R(i,j)=R(i,j)/s;
    end;end
  elseif(cs==3)%%相关系数法
  for(i=1:n)for(j=1:n)xi=0;xj=0;
    for(k=1:m)xi=xi+X(i,k);xj=xj+X(j,k);end
    xi=xi/m;xj=xj/m;xis=0;xjs=0;
    for(k=1:m)xis=xis+(X(i,k)-xi)^2;xjs=xjs+(X(j,k)-xj)^2;end
    s=sqrt(xis*xjs);R(i,j)=0;
    for(k=1:m)R(i,j)=R(i,j)+abs((X(i,k)-xi)*(X(j,k)-xj));end
    R(i,j)=R(i,j)/s;
  end;end
  elseif(cs==4)%%指数相似系数法
    for(i=1:n)for(j=1:n)R(i,j)=0;
      for(k=1:m)xk=0;
        for(z=1:n)xk=xk+X(z,k);end
        xk=xk/n;sk=0;
        for(z=1:n)sk=sk+(X(z,k)-xk)^2;end
        sk=sk/n;R(i,j)=R(i,j)+exp(-0.75*((X(i,k)-X(j,k))/sk)^2);
    end
    R(i,j)=R(i,j)/m;
  end;end
  elseif(cs<=7)%%最大最小法 算术平均最小法 几何平均最小法
    for(i=1:n)for(j=1:n)fz=0;fm=0;
      for(k=1:m)
        if(X(j,k)<0)R=[];return;end
        if(X(j,k)<X(i,k))x=X(i,k);
        else x=X(j,k);end
        fz=fz+x;
      end
      if(cs==5)%%最大最小法
        for(k=1:m)if(X(i,k)>X(j,k))x=X(i,k);else x=X(j,k);end;end
        fm=fm+x;
      elseif(js==6)for(k=1:m)fm=fm+(X(i,k)+X(j,k))/2;end%%算术平均最小法
      else for(k=1:m)fm=fm+sqrt(X(i,k)*X(j,k));end;end%%几何平均最小法
      R(i,j)=fz/fm;
    end;end
  elseif(cs<=10)C=0;%%直接距离法
    for(i=1:n)for(j=i+1:n)d=0;
    if(cs==8)for(k=1:m)d=d+(X(i,k)-X(j,k))^2;end
    d=sqrt(d)%欧几里得距离
    elseif(cs==9)for(k=1:m)d=d+abs(X(i,k)-X(j,k));end%%海明距离
    else for(k=1:m)if(d<abs(X(i,k)-X(j,k)))d=abs(X(i,k)-X(j,k));end;end;end%%切比雪夫距离
    if(C<d)C=d;end
  end;end
  C=1/(1+C);
  for(i=1:n)for(j=1:n)d=0;
    if(cs==8)for(k=1:m)d=d+(X(i,k)-X(j,k))^2;end
    d=sqrt(d);%%欧几里得距离
    elseif(cs==9)for(k=1:m)d=d+abs(X(i,k)-X(j,k));end%%海明距离
    else for(k=1:m)if(d<abs(X(i,k)-X(j,k)))d=abs(X(i,k)-X(j,k));end;end;end%%切比雪夫距离
    R(i,j)=1-C*d;
  end;end
  elseif(cs<=13)minM=lnf;%%倒数距离法
    for(i=1:n)for(j=i+1:n)d=0;
    if(cs==11)for(k=1:m)d=d+(X(j,k)-X(j,k))^2;end
      d=sqrt(d);%欧几里得距离
    elseif(cs==12)for(k=1:m)d=d+abs(X(i,k)-X(j,k));end%%海明距离
    else for(k=1:m)if(d<abs(X(i,k)-X(j,k)))d=abs(X(i,k)-X(j,k));end;end;end%%切比雪夫距离
    if(minM>d)minM=d;end
  end;end
  minM=0.9999*minM;
  if(minM<0.000001)return;end
  for(i=1:n)for(j=1:n)d=0;
    if(j==i)R(i,j)=1;continue;end
    if(cs==11)for(k=1:m)d=d+(X(i,k)-X(j,k))^2;end
      d=sqrt(d);%%欧几里得距离
    elseif(cs==12)for(k=1:m)d=d+abs(X(i,k)-X(j,k));end%%海明距离
    else for(k=1:m)if(d<abs(X(i,k)-X(j,k)))d=abs(X(i,k)-X(j,k));end;end;end%%切比雪夫距离
    R(i,j)=minM/d;
  end;end
  else for(i=1:n)for(j=1:n)d=0;%%指数距离法
    if(cs==14)for(k=1:m)d=d+(X(i,k)-X(j,k))^2;end
      d=sqrt(d);%%欧几里得距离
    elseif(cs==15)for(k=1:m)d=d+abs(X(i,k)-X(j,k));end%%海明距离
    else for(k=1:m)if(d<abs(X(i,k)-X(j,k)))d=abs(X(i,k)-X(j,k));end;end;end%%切比雪大距离
    R(i,j)=exp(-d);
  end;end;end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -