用matlab进行模糊识别

例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最贴近。

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

   

 

由贴近度可知,BA更贴近于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。

 

MATLAB 中计算模糊系数可以使用模糊逻辑工具箱(Fuzzy Logic Toolbox)提供的函数。以下是一个简单的示例,演示如何计算一个模糊系统的模糊系数: ```matlab % 创建一个模糊逻辑工具箱中的新模糊系统 fis = newfis('fuzzysystem'); % 添加输入变量 fis = addvar(fis, 'input', 'input_var', [-10 10]); fis = addmf(fis, 'input', 1, 'low', 'trimf', [-10 -10 0]); fis = addmf(fis, 'input', 1, 'high', 'trimf', [0 10 10]); % 添加输出变量 fis = addvar(fis, 'output', 'output_var', [-10 10]); fis = addmf(fis, 'output', 1, 'low', 'trimf', [-10 -10 0]); fis = addmf(fis, 'output', 1, 'high', 'trimf', [0 10 10]); % 添加模糊规则 ruleList = [1 1 1 1 1; 2 1 2 1 1]; fis = addrule(fis, ruleList); % 设置输入值 input_value = -5; % 模糊化输入 fuzzified_input = evalfis(fis, input_value); % 计算模糊系数 fuzzy_coefficient = defuzz(fis, fuzzified_input, 'centroid'); disp(['模糊系数: ', num2str(fuzzy_coefficient)]); ``` 在上面的示例中,我们创建了一个简单的模糊系统,包括一个输入变量和一个输出变量。然后,我们添加了两个模糊集和一个模糊规则。接下来,我们设置了输入值并通过 `evalfis` 函数进行模糊化。最后,我们使用 `defuzz` 函数计算模糊系数,并将结果打印出来。 请注意,这只是一个简单的示例,实际上,模糊系统的计算可能更加复杂,具体的实现方式可能因具体问题而异。你可以根据自己的需求调整模糊集的形状、模糊规则以及使用不同的解模糊方法来计算模糊系数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sanqima

一键三连,多多益善

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值