基于正态分布的三角形模糊识别

本文主要是代码的实现

代码包含了传统三角形模糊识别,指数型三角形模糊识别,以及由本人改进的基于正态分布的三角形模糊识别

对于正态分布函数做了一定的改进,幂次的分母项我将它称之为敏感度,此外对于等腰直角三角形的识别还是比较困难,所以我还设置了阈值,这两个参数是由我自己主观给出,也可通过训练集计算得出,本人不会机器学习就不细讲,以下是代码实现

clear
clc
disp('三角形模糊识别')
disp('请输入三角形ABC的三个角,严格按照从大到小排序');
A=input('输入第一大角A=');
B=input('输入第二大角B=');
C=input('输入第三大角C=');
if A+B+C~=180
    error('三个角度数总和不为180°,请重新输入')
end
if A<B||A<C||B<C
    error('三个角度没有严格按照从大到小排序,请重新输入')
end
%传统三角形模糊识别隶属函数
E=1-(1/180)*max(A-B,B-C);%等边三角形
I=1-(1/60)*min(A-B,B-C);%等腰三角形
R=1-(1/90)*abs(A-90);%直角三角形
IR=1-max((1/60)*min(A-B,B-C),(1/90)*abs(A-90));%等腰直角三角形
T=min(min(E,I),R);%非典型三角形
max1=max(max(max(E,I),max(R,IR)),T);
%判断三角形类型
max1=I;F1='这是一个等腰三角形';
if max1<E 
    max1=E; 
    F1='这是一个等边三角形'; 
end
if max1<R 
    max1=R; 
    F1='这是一个直角三角形'; 
end
if max1<IR 
    max1=IR; 
    F1='这是一个等腰直角三角形'; 
end
if max1<T 
    max1=T; 
    F1='这是一个非典型三角形'; 
end
disp('传统三角形模糊识别');
disp(F1);
disp('其隶属度分别为');
disp('等边三角形 等腰三角形 直角三角形 等腰直角三角形 非典型三角形');
disp([E,I,R,IR,T]);
%指数型三角形模糊识别隶属函数
Ez=(1-(1/180)*max(A-B,B-C))^max(A-B,B-C);%等边三角形
Iz=(1-(1/60)*min(A-B,B-C))^min(A-B,A-C);%等腰三角形
Rz=(1-(1/90)*abs(A-90))^abs(A-90);%直角三角形
IRz=min(Iz,Rz);%等腰直角三角形
Tz=min(min(Ez,Iz),Rz);%非典型三角形
max2=max(max(max(Ez,Iz),max(Rz,IRz)),Tz);
%判断三角形类型
max2=I;F2='这是一个等腰三角形';
if max2<E 
    max2=E; 
    F2='这是一个等边三角形'; 
end
if max2<R 
    max2=R; 
    F2='这是一个直角三角形'; 
end
if max2<IR 
    max2=IR; 
    F2='这是一个等腰直角三角形'; 
end
if max2<T 
    max2=T; 
    F2='这是一个非典型三角形'; 
end
disp('指数型三角形模糊识别');
disp(F2);
disp('其隶属度分别为');
disp('等边三角形 等腰三角形 直角三角形 等腰直角三角形 非典型三角形');
disp([Ez,Iz,Rz,IRz,Tz]);
%基于正态分布的三角形模糊识别隶属函数---(Zooxerkano)
X=(A*C)/(B*(B+C));
Ezx=exp(-((max(A-B,B-C))/6)^2);
Izx=exp(-((min(A-B,B-C))*10/B)^2);
Rzx=exp(-((abs(A-90))/9)^2);
IRzx=exp(-((X-1)/0.1)^2);
Tzx=1-max(max(Ezx,Izx),max(Rzx,IRzx));
IRzx1=min(Izx,Rzx);
max3=max(max(max(Ezx,Izx),max(Rzx,IRzx)),Tzx);
max3=Izx;F3='这是一个等腰三角形';
if max3<Ezx 
    max3=Ezx; 
    F3='这是一个等边三角形'; 
end
if max3<Rzx 
    max3=Rzx; 
    F3='这是一个直角三角形'; 
end
if max3<IRzx||IRzx1>0.95
    max3=IRzx; 
    F3='这是一个等腰直角三角形'; 
end
if max3<Tzx 
    max3=Tzx; 
    F3='这是一个非典型三角形'; 
end
disp('基于正态分布的三角形模糊识别---(Zooxerkano)');
disp(F3);
disp('其隶属度分别为');
disp('等边三角形 等腰三角形 直角三角形 等腰直角三角形 非典型三角形');
disp([Ezx,Izx,Rzx,IRzx,Tzx]);

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值