模糊数学的MATLAB应用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
%用fuzzy()函数可视地编辑模糊推理系统
Fuzzy(fff)
EditMembership functions打开隶属度函数编辑界面。
选择EditAdd MFs菜单项,打开对话框。可以定义各个信号的隶属函数可以通过编辑得到输出隶属函数。
五、模糊规则与模糊推理
1.模糊化
若将某信号用三个隶属函数表示,则一般对应的是‘很小’‘中等’‘很大’。
模糊数学的MATLAB应用
一、经典集合理论
运算名称
MATLAB语句
集合运算描述
并集运算
A=inion(B,C)
A=B∪C
差集运算
A=setdiff(B,C)
A=B\C
交集运算
A=intersect(B,C)
A=B∩C
异或运算
A=setxor(B,C)
A=(B∪C)\( B∩C)
惟一运算
A=unique(B)
模糊推理问题求解
y=evalfis(X,fis)
其中,
X为矩阵,各列为输入信号的精确值
【举例5】
假设已经按上述方式建立起了模糊推理系统,在x-y平面内的(-3,-5)-(3,5)区间内进行网络分割,试用此模糊推理系统绘制出输出地三维曲面。
【求解】
%建立模糊推理系统
fff=newfis(‘fis1’);
plot(x,y);
text(5,gbellmf(5,[a,b,c]),strcat(‘\leftarrowb=’,num2str(c)))
holdon
end
title(‘c参数变化’)
2.Gauss隶属度函数
MATLAB模糊逻辑工具箱提供了函数
y=gaussmf(x,[ ,c])
%首先初始化赋值
Clear
z=reshape(z1,size(x));
C=[1,7,4,2,7,9,8];
%对集合D唯一化处理
D=unique(C)
%求集合A、B的并集
E=union(A,B)
%求集合A、B的交集
F=intersect(A,B)
%求集合A、B的差集
G=setdiff(A,B)
%异或运算
H=setxor(A,B)
%验证交换律
Key=Intersect(union(A,B),C)==union(intersect(A,C),intersect(B,C))
clc
x=[0:0.05:10]’;
c0=1:4;
=2;
forc=c0
y=[gaussmf(x,[ ,c])];
plot(x,y);
text(6,gaussmf(6,[ ,c]),strcat(‘\leftarrowc=’,num2str(c)))
holdon
end
title(‘c参数变化’)
figure;
3.解模糊化
通过模糊推理得到模糊输出量op,此模糊输出量可以通过指定的算法精确化,亦称解模糊化。
模糊逻辑工具箱提供了多种解模糊化的算法。
按照以上方法建立模糊推理系统的数据结构。
存储建立的模糊推理系统FileExportTo Disk *.fis
Writefis()
FileExportToWorkspace
若分为5段,则为‘很小’‘较小’‘中等’‘较大’‘很大’
精确信号模糊化模糊信号
2.模糊规则
若将多路信号均模糊化,可以用if,else。
If ip1为”很小”and ip2为“很大”then op=”很大”
模糊规则可以通过ruleedit()函数生成的界面进行设定.也可以通过mfedit()函数的EditRules菜单项编辑模糊推理规则。
c=3;
fora=a0
y=[gbellmf(x,[a,b,c])];
plot(x,y);
text(6,gbellmf(6,[a,b,c]),strcat(‘\leftarrowa=’,num2str(a)))
holdon
end
title(‘a参数变化’)
figure;
b0=1:4;
a=1;
c=3;
forb=b0
c0=1:4;
=2;
for = 0
y=[gaussmf(x,[ ,c])];
plot(x,y);
text(3,gaussmf(3,[ ,c]),strcat(‘\leftarrow =’,num2str( )))
holdon
end
title(‘ 参数变化’)
3.Sigmoid隶属度函数
Sigmoid隶属度函数的数学表达式:
【代码】
%建立模糊推理系统
fff=newfis(‘fis1’);
%定义第一路输入
fff=addvar(fff,’input’,’ip1’,[-3,3]);
%定义第二路输入
fff=addvar(fff,’input’,’ip2’,[-5,5])
%定义输出
fff=addvar(fff,’output’,’op’,[-2,2])
4.隶属度函数的图形编辑器
在MAYLAB提示符下键入命令mfedit,打开隶属度函数编辑器界面。
四、模糊推理系统建立
模糊逻辑工具箱中的newfis()函数可以构建出模糊推理系统的数据结构。
FIS fuzzy inference system模糊推理系统
Fis=newfis(name)
Name为字符串表示推理系统的名称。
%判定F E是否成立
Ismember(F,E)
Key=all(ismember(F,E))
二、模糊集合
经典集合理论中,元素a与集合A只有两种关系,属于或不属于。而在现在的实际应用中,常常有模糊的概念。亦即某一事物a以一定程度属于集合A。
当问题的复杂性增加时,精确的描述将失去意义,而有意义的描述将失去精度。
MATLAB模糊逻辑工具箱提供了函数
y=sigmf(x,[ ,c])
x=[0:0.05:10]’;
a0=1:2:7;
c=5;
fora=a0
y=[sigmf(x,[a,c])];
plot(x,y);
text(6,sigmf(6,[a,c]),strcat(‘\leftarrowa=’,num2str(a)))
holdon
end
title(‘a参数变化’)
figure;
c0=1:4;
a=3;
forc=c0
y=[sigmf(x,[a,c])];
plot(x,y);
text(3,sigmf(3,[a,c]),strcat(‘\leftarrowc=’,num2str(c)))
holdon
end
title(‘c参数变化’)
为输入或输出变量的取值范围,亦即最小值与最大值构成的行向量。
通过这样的方法可以进一步定义fis的输入输出情况,每个变量的隶属函数可以用addmf()函数定义,也可以用mfedit()定义.
【举例4】假设某模糊推理系统有两个输入变量ip1和ip2,并有一个输出变量op,且假设ip1的取值范围为(-3,3),分为3个区间,隶属函数选择为钟形函数,输入信号ip2的取值范围为(-5,5),分分为3个区间,隶属函数选择为Gauss函数,输出信号op的取值范围为(-2,2),隶属函数为Sigmoid型函数,则可以用以下的语句构造模糊推理系统原型,并用fuzzy()函数编辑此模糊推理系统.
y=[gbellmf(x,[a,b,c])];
plot(x,y);
text(6,gbellmf(6,[a,b,c]),strcat(‘\leftarrowb=’,num2str(b)))
holdon
end
title(‘b参数变化’)
c0=1:4;
a=2;
b=2;
forc=c0
y=[gbellmf(x,[a,b,c])];
%演示ismember()函数
Ismember(A,B)
%下面语句用来提取A,B中元素
A(ismember(A,B))
【举例2】
假设A集合为字符串组{’skhsak’,’ssd’,’ssfa’},B集合{’sdsd’,’ssd’,’sssf’},试求他们的交集,并集,令C={’jsg’,’’sjjfs,’ssd’},试验证结合律
将集合B中重复的元素剔除
属于判定
A=ismember(a,B)
Key=a∈B
【举例1】
假设给定3个集合A={1,4,5,8,7,3},B={2,4,6,8,10},C={1,7,4,2,7,9,8},试演示集合的各种运算,并验证这些基和满足交换律
【求解】
%首先赋值
A=[1,4,5,8,7,3];
B=[2,4,6,8,10];
fff=addvar(fff,’input’,’ip1’,[-3,3]);
fff=addvar(fff,’input’,’ip2’,[-5,5]);
fff=addvar(fff,’output’,op,[-2,2]);
[x,y]=meshgrid(-3:0.2:3,-5:0.2:5);
z1=evalfis([x y],fff)
三、隶属度与模糊化
1.钟形隶属度函数
MATLAB中提供了求解隶属度函数的值
y=gbellmf(x,[a,b,c])
x任意给定的自变量值,求出x值处的隶属度的值y
【wenku.baidu.com例3】
【题目】
可以绘制出不同参数组合下的钟形隶属度函数曲线。
【代码】
%首先初始化赋值
x=[0:0.05:10]’;
a0=1:5;
b=2;
该函数可用于建立结构体fis,内容包括模糊的与、或运算,解模糊运算。
定义了模糊推理系统fis后,可以调用addvar()函数来添加系统的输入和输出变量。
Fis=addvar(fis,’input’,iname, )可以定义一个输入变量iname
Fis=addvar(fis,’output’,oname, )可以定义一个输出变量oname
%求交集、并集
A={’skhsak’,’ssd’,’ssfa’};
B={’sdsd’,’ssd’,’sssf’};
C={’sdsd’,’ssd’,’sssf’};
disp(‘ ’);
E=union(A,B)
disp(‘A B’);
F=intersect(A,B)
%验证结合律
key=setdiff(intersect(union(A,C),B),union(intersect(A,C),intersect(B,C)))
相关文档
最新文档