使用梯形隶属度函数获取样本不同等级隶属度

该代码实现了一个模糊逻辑系统,计算了不同等级隶属度函数。包括最小、中间和最大三种情况的隶属度计算,基于给定的输入值和参数。代码涉及单指标输入值处理和多等级判断。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 最终版

 clear all;
 % 单指标输入值(自变量):
 k1 = [4.964 	4.393 	5.298 	4.476 	6.452 	9.064 	10.445 	10.765 	15.741 	16.120 	19.415 
] ; 
% 五等级隶属度函数参数:
  b1 =[3	4	5	6	7  9   10];  % 下限
%  b1 =b1';
  b2= [4    5	6	7	8  10  11];  % 上限
%  b2 =b2';
  [m,n] = size(k1); 
  [h,k]= size(b1);
for j=1:n       % 循环每一个样本
     %% min  隶属度函数 2个较小,一个中间,2个极大
for   k=1:2     
    %x1(:,j) = (k1(:,j)-1);% x取值范围0~200
    x1(:,j) = k1(:,j)
    if x1(:,j) >= 0 && x1(:,j) <=b1(1,k)
        y1(k,j)=1.0;
    elseif x1(:,j) >= b1(1,k) && x1(:,j) <= b2(1,k)
        y1(k,j) = (b2(1,k) - x1(:,j))/(b2(1,k) - b1(1,k));
    else  %(>b2)
       y1(k,j) = 0.0;
    end
end
%% intemidiate
for k=3     
         if x1(:,j) <b1(1,3)
           y1(k,j)=0.0;
    elseif x1(:,j) >= b1(1,3) && x1(:,j) <=b2(1,3)
           y1(k,j) = (x1(:,j)-b1(1,3))/(b2(1,3) - b1(1,3));
    elseif x1(:,j) >= b1(1,4) && x1(:,j) <=b2(1,4)
           y1(k,j) = 1.0;       
    elseif x1(:,j) >= b1(1,5) && x1(:,j) <= b2(1,5)
           y1(k,j) = (b2(1,5) - x1(:,j)) / ( b2(1,5) - b1(1,5) );
    else
           y1(k,j) = 0.0;
    end
    end
    %% max
    for  k=6:7
        x1(:,j) = k1(:,j)
    if x1(:,j) >= 0 && x1(:,j) <=b1(1,k)
        y1(k,j)=0.0;
    elseif x1(:,j) >= b1(1,k) && x1(:,j) <= b2(1,k)
        y1(k,j) = (x1(:,j)-b1(1,k))/(b2(1,k) - b1(1,k));    
    else  %(>b2)
       y1(k,j) =1.0;   
   end
   end
end
%% 
y1(4:5,:)=[] % 使用空矩阵[]删除y1的4、5行
disp(y1)

初级版

%  末尾有介绍
% Membership function for W People  “很年轻W”的隶属函数曲线
clear all;
close all;
%% max
k1 = [2 12 23 45 57] ; % 自变量
 a1= 1 ; a2 = 70 ;  % 参数
 [m,n] = size(k1);    
  %  隶属度函数
for j=1:n      
    x1(:,j) = (k1(:,j)-1);% x取值范围0~200
    if x1(:,j) >= 0 && x1(:,j) <=a1
        y1(:,j)=0.0;
    elseif x1(:,j) >= a1 && x1(:,j) <= a2
        y1(:,j) = (x1(:,j)-a1)/(a2 - a1);
    else  %(>a2)
       y1(:,j) = 1.0;
    end
end
disp(y1)

 %% min 
 
 k1 = [1.129 	1.258 	1.252 	1.985 	1.953 	1.967 	1.976 	2.035 	2.307 	2.448 	2.634 
] ; % 自变量
 b1= 1 ; b2 = 1.2;  % 参数
 [m,n] = size(k1);    
for j=1:n       %  隶属度函数
    %x1(:,j) = (k1(:,j)-1);% x取值范围0~200
    x1(:,j) = k1(:,j)
    if x1(:,j) >= 0 && x1(:,j) <=b1
        y1(:,j)=1.0;
    elseif x1(:,j) >= b1 && x1(:,j) <= b2
        y1(:,j) = (b2 - x1(:,j))/(b2 - b1);
    else  %(>b2)
       y1(:,j) = 0.0;
    end
end
disp(y1)
%% int (先大后小) 
      c1= ; c2 ; c3; c4 ;
% for j=1:n       %  隶属度函数
%     x1(:,j) = (k1(:,j)-1);% x取值范围0~200
%       if x1(:,j) < c1
%            y1(:,j)=0.0;
%     elseif x1(:,j) >= c1 && x1(:,j) <=c2
%            y1(:,j) = (x1(:,j)-c1)/(c2 - c1);
%     elseif x1(:,j) >= c2 && x1(:,j) <= c3
%            y1(:,j) = 1.0;       
%     elseif x1(:,j) >= c3 && x1(:,j) <= c4
%            y1(:,j) = (c4 - x1(:,j))/(c4 - c3);
%     else
%            y1(:,j) = 0.0;
%     end
% end
% %  fprintf(' y1(k1) is %8.5f\n', y1(k1))
%  
 
 
 
%年轻25
for k = 1:1:2001
    x(k) = (k-1)*0.1;
    if x(k)>=0&x(k)<=25
        y(k) = 1.0;
    elseif x(k)>25&x(k)<=70
        y(k)=(70 - x(k))/45;
    else
        y(k) = 0;
    end
end
 
%很年轻 Z型
for k2 = 1:1:2001
    x2(k2) = (k2-1) * 0.1;
    y2(k2) = zmf(x(k2),[15,50]);
end
 
%不老也不年轻 钟型
for k3 = 1:1:2001
    x3(k3) = (k3-1)*0.1;
    y3(k3) = gbellmf(x3(k3),[10,5,50]);
   
end
 
%figure(1);
plot(x,y,'k','Color',[1 0 0],'LineWidth',2);
xlabel('x Years');
ylabel('Y');
%figure('x','y','年轻 Y'); 
hold on;
 
%figure(2)
plot(x1,y1,'k','Color',[0 1 0],'LineWidth',2);
xlabel('x Years');
ylabel('Y');
%figure('x1','y1','年老 O'); 
hold on;
%figure(3)
plot(x2,y2,'k','Color',[0 0 1],'LineWidth',2);
xlabel('x Years');
ylabel('Y');
%figure('x2','y2','很年轻 W'); 
hold on;
%figure(4)
plot(x3,y3,'k','Color',[0.5 0.5 0.5],'LineWidth',2);
xlabel('x Years');
ylabel('Y');
%figure('x3','y3','不老也不年轻 V'); 
legend('年轻 Y','年老 O','很年轻 W','不老也不年轻 V')
%http://t.csdn.cn/KKrhP

修改版


clear all;
close all;
%% max
 x1 = [4.964 	4.393 	5.298 	4.476 	6.452 	9.064 	10.445 	10.765 	15.741 	16.120 	19.415 
] ; % 自变量
 a1=9 ; a2 = 15;  % 参数
 [m,n] = size(k1);    
  %  隶属度函数
for j=1:n      
    x1(:,j) = (k1(:,j));% x取值范围0~200
    if x1(:,j) >= 0 && x1(:,j) <=a1
        y1(:,j)=0.0;
    elseif x1(:,j) >= a1 && x1(:,j) <= a2
        y1(:,j) = (x1(:,j)-a1)/(a2 - a1);
    else  %(>a2)
       y1(:,j) = 1.0;
    end
end
disp(y1)

 %% min 
 clear all;
 % 单指标输入值(自变量):
 k1 = [4.964 	4.393 	5.298 	4.476 	6.452 	9.064 	10.445 	10.765 	15.741 	16.120 	19.415 
] ; 
% 七等级隶属度函数参数:
  b1 =[3	4	5	6	7	8	9];
%  b1 =b1';
  b2= [4    5	6	7	8	9	10];
%  b2 =b2';
  [m,n] = size(k1); 
  [h,l] = size(b1);
for j=1:n       %  隶属度函数
for   k=1:l
    %x1(:,j) = (k1(:,j)-1);% x取值范围0~200
    x1(:,j) = k1(:,j)
    if x1(:,j) >= 0 && x1(:,j) <=b1(1,k)
        y1(k,j)=1.0;
    elseif x1(:,j) >= b1(1,k) && x1(:,j) <= b2(1,k)
        y1(k,j) = (b2(1,k) - x1(:,j))/(b2(1,k) - b1(1,k));
    else  %(>b2)
       y1(k,j) = 0.0;
    end
end
end
disp(y1)
%% int (先大后小) 

 x1 = [4.964 	4.393 	5.298 	4.476 	6.452 	9.064 	10.445 	10.765 	15.741 	16.120 	19.415 
] ; % 自变量
      c1=8 ; c2=9 ; c3=10; c4=11 ;
for j=1:n       %  隶属度函数
    x1(:,j) = (k1(:,j));% x取值范围0~200
      if x1(:,j) < c1
           y1(:,j)=0.0;
    elseif x1(:,j) >= c1 && x1(:,j) <=c2
           y1(:,j) = (x1(:,j)-c1)/(c2 - c1);
    elseif x1(:,j) >= c2 && x1(:,j) <= c3
           y1(:,j) = 1.0;       
    elseif x1(:,j) >= c3 && x1(:,j) <= c4
           y1(:,j) = (c4 - x1(:,j))/(c4 - c3);
    else
           y1(:,j) = 0.0;
    end
end
   disp(y1)
% %  fprintf(' y1(k1) is %8.5f\n', y1(k1))
%  
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值