Matlab 中绘制模糊隶属度函数

6.2模糊推理结构FIS

6.2.1不使用数据聚类方法从数据生成FIS结构

函数 genfis1

格式

fismat=genfis1(data)

fismat=genfis1(data,numMFs,inmftype,outmftype)

说明genfis1为anfis训练生成一个Sugeno型作为初始条件的FIS结构(初始隶属函数)。genfis1(data,numMFs,inmftype,outmftype)使用对数据的网格分割方法,从训练数据集生成一个FIS结构。Data是训练数据矩阵,除最后一列表示单一输出数据外,它的其它各列表示输入数据。NumMFs是一个向量,它的坐标指定与每一输入相关的隶属函数的数量。如果你想使用每个输入相关的相同数量的隶属函数,那么只须使numMFs成为一个数就足够了。Inmftype是一个字符串数组,它的每行指定与每个输入相关的隶属函数类型。outmftype是一个字符串数组,它的指定与每个输出相关的隶属函数类型

例6-19

>>data=[rand(10,1)10*rand(10,1)-5rand(10,1)];

>>numMFs=[37];

>>mfType=str2mat('pimf','trimf');

>>fismat=genfis1(data,numMFs,mfType);

>>[x,mf]=plotmf(fismat,'input',1);

>>subplot(2,1,1),plot(x,mf);

>>xlabel('input1(pimf)');

>>[x,mf]=plotmf(fismat,'input',2);

>>subplot(2,1,2),plot(x,mf);

>>xlabel('input2(trimf)');

6.2.2使用减法聚类方法从数椐生成FIS结构

函数genfis2

格式

fismat=genfis2(Xin,Xout,radii)

fismat=genfis2(Xin,Xout,radii,xBounds)

fismat=genfis2(Xin,Xout,radii,xBounds,options)

说明Xin是一个矩阵,它的每一行包含一个数据点的输入值;Xout是一个矩阵,它的每一行包含一个数据点的输出值;randi是一个向量,它指定一个聚类中心在一个数据维上作用的范围,这里假定数据位于一个单位超立方体内:xBounds是一个2×N可选矩阵,它用于指定如何将Xin和Xout中的数据映射到一个超立方体内,这里是数据的维数(行数);options是一个可选向量,它指定的值用于覆盖算法参数的缺省值。

例6-20

fismat=genfis2(Xin,Xout,0.5)

这是使用此函数所需的最小变量数。这里对所有数据维指定0.5的作用范围。

fismat=genfis2(Xin,Xout,[0.50.250.3])

这里假定组合的维数是3。假设Xin有两维、Xout有一维,那么,0.5和0.25是Xin数据维中每一维的作用范围,0.3是Xout数据维的作用范围。

fismat=genfis2(Xin,Xout,0.5,[-10-50;10520])

这里指定了如何将Xin和Xout中的数据规范化为[01]区间中的值来进行处理。假设Xin有两维、Xout有一维,那么Xin第一列中的数据是从[-10+10]比例变换后的值,Xin第二列中的数据是从[-5+5]比例变换后的值,Xout中的数据是从[020]比例变换后的值。

6.2.3生成一个FIS输出曲面

函数gensurf

格式

gensurf(fis)%使用前两个输入和第一个输出来生成给定模糊推理系统(fis)的输出曲面

gensurf(fis,inputs,output)%使用分别由向量input和标量output给定的输入(一个或两个)和输出(只允许一个)来生成一个图形。

gensurf(fis,inputs,output,grids)%指定X(第一、水平)和Y(第二、垂直)方向的网格数。如果是二元向量,X和Y方向上的网格可以独立设置。

gensurf(fis,inputs,output,grids,refinput)%用于多于两个的输入,refinput向量的长度与输入相同:

将对应于要显示的输入的refinput项,设置为NaN;

对其它输入的固定值设置为双精度实标量。

[x,y,z]=gensurf(…)%返回定义输出曲面的变量并且删除自动绘图。

例6-21

>>a=readfis('tipper');

>>gensurf(a)

6.2.4将mamdan型FIS转换为SugenoFIS

函数mam2sug

格式sug_fis=mam2sug(mam_fis)

说明该函数将一个mamdani型FIS结构(不必是单输出)mam_fis转化为一个sugeno型结构sug_fis。返回的sugeno型系统具有常值输出隶属度函数。这些常值由原来mamdani型系统的后件的隶属度函数的面积中心法来确定。前件仍保持不变。

6.2.5完成模糊推理计算

函数evalfis

格式

output=evalfis(input,fismat)

output=evalfis(input,fismat,numPts)

[output,IRR,ORR,ARR]=evalfis(input,fismat)

[output,IRR,ORR,ARR]=evalfis(input,fismat,numPts)

说明input:指定输入值的一个数或一个矩阵,如果输入是一个M×N矩阵,其中N是输入变量数,那么evalfis使用input的每一行作为一个输入向量,并且为变量output返回M×L矩阵,该矩阵每一行是一个向量并且L是输出变量数;

fismat:要计算的一个FIS结构;

numPts:一个可选变量,它表示在输入或输出范围内的采样点数,在这些点上计算隶属函数,如果不使用此变量,就使用101点的缺省值。

Evalfis的值域如下:

Output:大小为ML的输出矩阵,这里M表示前面指定的输入值的数量,L表示FIS的输出变量数。

evalfis的可选值域变量只有当input是一个行向量时才计算这些可选值域变量是:

IRR:通过隶属函数计算的输入变量的结果,这是一个大小为numRulesN的矩阵,这里numRules是规则条数,N是输入变量数。

ORR:通过隶属函数计算的输出变量的结果,这是一个大小为numPtsnumRulesL的矩阵,这里numRules是规则条数,L是输出变量数,此矩阵的第一组numRules列,对应于第一个输出,第二组numRules对应于第二个输出,依次类推。

ARR:对每个输出,在输出值域中,numPts处采样合成值的numPtsL矩阵,当只有一个值域变量调用时,该函数使用由结构fismat指定的模糊推理系统,由标量或矩阵inout指定的输入值计算输出向量output。

例6-22

>>fismat=readfis('tipper');

>>out=evalfis([21;49],fismat)

结果为

out=

7.0169

19.6810

6.2.6模糊c均值聚类

函数fcm

格式

[center,U,obj_fcn]=fcm(data,cluster_n)

说明对给定的数据集应用模糊c均值聚类方法进行聚类

data:要聚类的数据集,每行是一个采样数据点;

cluster_n:聚类中心的个数(大于1)

center:迭代后得到的聚类中心的矩阵,这里每行给出聚类中心的坐标;

U:得到的所有点对聚类中心的模糊分类矩阵或隶属度函数矩阵;

Obj_fcn:迭代过程中,目标函数的值;

fcm(data,cluster_n,options)使用可选的变量options控制聚类参数。包括停止准则,和/或设置迭代信息显示:

options(1):分类矩阵U的指数,缺省值是2.0;

options(2):最大迭代次数,缺省值是100;

options(3):最小改进量,即迭代停止的误差准则,缺省值是1e-5;

option(4):迭代过程中显示信息,缺省值是1。

如果任意一项为NaN,这些选项就使用缺省值;当达到最大迭代次数时,或目标函数两次连续迭代的改进量小于指定的最小改进量,即满足停止误差准则时,聚类过程结束。

例6-23

>>data=rand(100,2);

>>[center,U,obj_fcn]=fcm(data,2);

>>plot(data(:,1),data(:,2),'o');

>>maxU=max(U);

>>index1=find(U(1,:)==maxU);

>>index2=find(U(2,:)==maxU);

>>line(data(index1,1),data(index1,2),'linestyle','none','marker','*','color','g');

>>line(data(index2,1),data(index2,2),'linestyle','none','marker','*','color','r');


6.2.7模糊均值和减法聚类

函数findcluster

格式findcluster

findcluster('file.dat')

说明findcluster产生一个GUI上的Method下的下拉式标签,可以实现模糊C均值(fcm)或模糊减法聚类(subtractiv),使用LoadData按钮输入数据,刚进入GUI时,对每种方法的选项都设置为缺省值。

此工具使用多维数据集,但只显示这些维数中的两维。使用X-axis和Y-axis下的下拉式标签选择你想观察的数据维。例如你有一个五维数据集,按照出现在数据集中的顺序,此工具将数据标记为data_1,data_2,data_3,data_4,data_5,Start将完成聚类,SaveCentre将保存聚类中心。

当使用数据集file.data时,findcluster(file.dat)自动装入数据集,并且只绘制数据集中的前两维。产生GUI后,你仍可以选择要聚类数据的那两维。

例6-24

>>findcluster('clusterdemo.dat')

6.2.8绘制一个FIS

函数plotfis

格式plotfis(fismat)

说明此函数显示由fismat指定的一个FIS的高层方框图,输入和它们的隶属函数出现在结构特征图的左边,同时输出和它们的隶属函数出现在结构特征图的右边。

例6-25

>>a=readfis('tipper');

>>plotfis(a)

6.2.9绘制给定变量的所有隶属的曲线

函数plotmf

格式plotmf(fismat,varType,varIndex)

说明此函数绘制与给定变量相关的称为fismat的FIS中的所有隶属函数曲线,变量的类型和索引分别由varType('input'或'output')和varIndex给出。此函数也可以与MATLAB函数subplot一起使用。

例6-26

>>a=readfis('tipper');

>>plotmf(a,'input',1)


6.2.10从磁盘装入一个FIS

函数readfis

格式fismat=readfis('filename')

说明从磁盘上的一个.fis文件(由filename命名)读出一个模糊推理系统,并将产生的FIS装入当前的工作空间中。Fismat=readfis不带输入变量,即没有指定文件名时,使用uigetfile命令打开一个对话框,提示用户指定文件的名称和目录位置。

例6-27

>>fismat=readfis('tipper');

>>getfis(fismat)

返回结果

getfis(fismat)

Name=tipper

Type=mamdani

NumInputs=2

InLabels=

service

food

NumOutputs=1

OutLabels=

tip

NumRules=3

AndMethod=min

OrMethod=max

ImpMethod=min

AggMethod=max

DefuzzMethod=centroid

ans=

tipper

6.2.11从FIS中删除某一隶属函数

函数rmmf

格式fis=rmmf(fis,'varType',varIndex,'mf',mfIndex)

说明从与工作空间FIS结构fis相关的模糊推理系统中删除变量类型为varType,索引为varIndex的隶属函数mfIndex。

字符串vartype必须是'input'或'output'。

varIndex是表示变量索引的一个整数,此索引表示列出变量的顺序;

变量'mf'是表示隶属函数的一个字符串;

mfIndex是表示隶属函数索引的一个整数,此索引表示列出隶属函数的顺序。

例6-28

>>a=newfis('mysys');

>>a=addvar(a,'input','temperature',[0100]);

>>a=addmf(a,'input',1,'cold','trimf',[03060]);

>>getfis(a,'input',1)

返回结果

Name=temperature

NumMFs=1

MFLabels=

cold

Range=[0100]

ans=

[]

>>b=rmmf(a,'input',1,'mf',1);

>>getfis(b,'input',1)

返回

Name=temperature

NumMFs=0

MFLabels=

Range=[0100]

ans=

[]

6.2.12从FIS中删除变量

函数rmvar

格式[fis2,errorStr]=rmvar(fis,'varType',varIndex)

fis2=rmvar(fis,'varType',varIndex)

说明fis2=rmvar(fis,'varType',varIndex),)从与工作空间FIS结构fis相关的模糊推理系统中删除索引为varIndex的语言变量mfIndex,字符串vartype必须是'input'或'output'。

varIndex是表示变量索引的一个整数,此索引表示列出变量的顺序。

[fis2,errorStr]=rmvar(fis,'varType',varIndex)将任何错误信息返回到字符串errorStr。

此命令自动更新规则列表以保证列表尺寸与当前变量数保持一致,在删除语言变量之前,你必须从FIS删除任何包含要删除变量的规则,你无法删除在规则列表中正在使用的模糊变量。

例6-29

>>a=newfis('mysys');

>>a=addvar(a,'input','temperature',[0100]);

>>getfis(a)

返回:

Name=mysys

Type=mamdani

NumInputs=1

InLabels=

temperature

NumOutputs=0

OutLabels=

NumRules=0

AndMethod=min

OrMethod=max

ImpMethod=min

AggMethod=max

DefuzzMethod=centroid

ans=

mysys

>>b=rmvar(a,'input',1);

>>getfis(b)

返回:

Name=mysys

Type=mamdani

NumInputs=0

InLabels=

NumOutputs=0

OutLabels=

NumRules=0

AndMethod=min

OrMethod=max

ImpMethod=min

AggMethod=max

DefuzzMethod=centroid

ans=

mysys

6.2.13设置模糊系统属性

函数setfis

格式a=setfis(a,'fispropname','newfisprop')

a=setfis(a,'vartype',varindex,'varpropname','newvarprop')

a=setfis(a,'vartype',varindex,'mf',mfindex,'mfpropname','newmfprop');

说明可以使用三个、五个或七个输入变量调用setfis命令,使用几个输入变量取决于是否设置整个结构的一个属性,是否设置属于该结构的一个特定变量,还是是否设置属于这些变量之一的一个特定隶属函数。这些变量是:

a:工作空间中FIS的一个变量名称,

vartype:表示变量类型的一个字符串:input或output;

varindex:输入或输出变量的索引;

mf:调用setfis时,七个变量中的第四个变量所用的字符串,用语指明此变量是一个隶属函数;

mfindex:属于所选变量的隶属函数的索引;

fispropname:表示你要设置FIS域属性的一个字符串:name,type,andmethod,ormethod,impmethod,aggmethod,defuzzmethod;

newfisprop:你要设置的FIS的属性或方法名称的一个字符串;

varpropname:你要设置的变量域名称的一个字符串:name或range;

newvarprop:你要设置的变量名称的一个字符串(对name),或变量范围的一个数组(对range),mfpropname—你要设置的隶属函数名称的一个字符串:name,type或params;

newmfprop:你要设置的隶属函数名称或类型域的一个字符串(对name或type)或者是参数范围的一个数组(对params)。

例6-30使用三个变量调用:

>>a=readfis('tipper');

>>a2=setfis(a,'name','eating');

>>getfis(a2,'name');

结果为:

out=

eating

如果使用五个变量,setfis将更新两个变量属性:

>>a2=setfis(a,'input',1,'name','help');

>>getfis(a2,'input',1,'name')

结果为:

ans=

help

如果使用七个变量,setfis将更新七个隶属函数的任意属性:

>>a2=setfis(a,'input',1,'mf',2,'name','wretched');

>>getfis(a2,'input',1,'mf',2,'name')

结果为:

ans=

wretched

6.2.14以分行形式显示FIS结构的所有属性

函数showfis

格式showfis(fismat)

说明以分行方式显示MATLAB工作空间FIS变量fismat,允许你查看结构的每个域的意义和内容。

例6-31

>>a=readfis('tipper');

>>showfis(a)

返回:

Nametipper

Typemamdani

Inputs/Outputs[21]

NumInputMFs[32]

NumOutputMFs3

NumRules3

AndMethodmin

OrMethodmax

ImpMethodmin

AggMethodmax

DefuzzMethodcentroid

InLabelsservice

food

OutLabelstip

InRange[010]

[010]

OutRange[030]

InMFLabelspoor

good

excellent

rancid

delicious

OutMFLabelscheap

average

generous

InMFTypesgaussmf

gaussmf

gaussmf

trapmf

trapmf

OutMFTypestrimf

trimf

trimf

InMFParams[1.5000]

[1.5500]

[1.51000]

[0013]

[791010]

OutMFParams[05100]

[1015200]

[2025300]

RuleAntecedent[11]

[20]

[32]

RuleConsequent1

2

3

RuleWeigth1

1

1

RuleConnection2

1

2

6.2.15完成模糊运算

函数fuzarith

格式C=fuzarith(X,A,B,operator)

说明使用区间算法,C=fuzarith(X,A,B,operator)返回一个模糊集C作为结果,该算法使用由字符串operator表示的函数,并在采样凸模糊集A和B上完成二进制运算;元素A和B由采样值域变量X的凸函数产生;

A,B和X是相同维数的向量;

operator是下列串之一:'sum','sub','prod',and'div';

该函数返回的模糊集C是一个与X具有相同长度的列向量

例6-32

>>point_n=101;%thisdeterminesMF'sresolution

>>min_x=-20;max_x=20;%universeis[min_x,max_x]

>>x=linspace(min_x,max_x,point_n)';

>>A=trapmf(x,[-10-213]);%trapezoidalfuzzysetA

>>B=gaussmf(x,[25]);%GaussianfuzzysetB

>>C1=fuzarith(x,A,B,'sum');

>>subplot(2,1,1);

>>plot(x,A,'b--',x,B,'m:',x,C1,'c');

>>title('fuzzyadditionA+B');

>>C2=fuzarith(x,A,B,'sub');

>>subplot(2,1,2);

>>plot(x,A,'b--',x,B,'m:',x,C2,'c');

>>title('fuzzysubtractionA-B');

>>C3=fuzarith(x,A,B,'prod');


6.2.16解析模糊规则

函数parsrule

格式fis2=parsrule(fis,txtRuleList)

fis2=parsrule(fis,txtRuleList,ruleFormat)

fis2=parsrule(fis,txtRuleList,ruleFormat,lang)

说明此函数为MATLAB工作空间FIS变量fis解析定义规则(txtRuleList)的文本,并且返回添加了相应规则列表的一个FIS结构。如果原始输入FIS结构fis有任意初始规则,他们将由新结构fis2替换。本函数支持三种不同的规则格式(由ruleFormat指定'verbose'(语言型)、'symbolic'(符号型)、'indexed'(索引型)。缺省格式是'verbose'(语言型)。当使用可选语言变量lang时,规则以语言型格式进行解析,并采用语言变量lang中指定的关键字。语言必须是'english'、'francais'或'deutsch'。英语关键字是if、then、is、AND、OR和NOT。

例6-33

>>a=readfis('tipper');

>>ruleTxt='ifserviceispoorthentipisgenerous';

>>a2=parsrule(a,ruleTxt,'verbose');

>>showrule(a2)

结果为

ans=

If(serviceispoor)

then(tipisgenerous)

6.2.17规则编辑器和语法编辑器

函数ruleedit

格式

ruleedit('a')

ruleedit(a)

说明当使用ruleedit('a')调用规则编辑器时,可用于修改存储在文件a.fis中的一个FIS结构的规则。它也可用于检查模糊推理系统使用的规则。为使用编辑器创建规则,你必须首先用FIS编辑器定义要使用的所有输入输出变量,你可以使用列表框和检查框选择输入、输出变量,连接操作和权重来创建新规则。如图所示,用ruleedit('tank')打开规则编辑器并装入tank.fis中存储的所有规则。 

菜单项:在规则编辑器GUI上,有一个菜单棒允许你打开相关的GUI工具、打开和保存系统等。File菜单与FIS编辑器上的File菜单功能相同。

·Edit菜单项包括:

Undo用于恢复最近的改变;

·View菜单项包括:

EditFISproperties…调用FIS编辑器;

Editmembershipfunctions…调用隶属度函数编辑器;

Editrules…调用规则编辑器;

Viewsurface…调用曲面观察器。

·Options菜单项包括:

Language用于选择语言:English、Deutsch和Francais;

Format用于选择格式

·Verbose使用单词“if”、“then”、“AND”、“OR”等创建实际语句。

·Symbolic用某些符号代替Verbose模式中使用的单词。例如:“ifAAND

BthenC”成为“A&B=>C”。

·indexed表示规则如何在FIS结构中存储。

6.2.18规则观察器和模糊推理框图

函数ruleview

格式ruleview('a')

说明使用ruleview('a')调用规则观察器时,将绘制在存储文件a.fis中的一个FIS的模糊推理框图。它用于观察从开始到结束整个蕴含过程。你可以移动对应输入的指示线,然后观察系统重新调节并计算新的输出。如图6-29:ruleview('tank')


菜单项:在规则编辑器GUI上,有一个菜单棒允许你打开相关的GUI工具、打开和保存系统,等等。File菜单与FIS编辑器上的File菜单功能相同。

·View菜单项包括:

EditFISproperties…调用FIS编辑器;

Editmembershipfunctions…调用隶属度函数编辑器;

Editrules…调用规则编辑器;

Viewsurface…调用曲面观察器。

·Options菜单项包括:

Rulesdisplayformat用于选择显示规则的格式。如果单击模糊推理方框图左边的规则序号,与该序号相关的规则出现在规则观察器底部的状态棒中。

6.2.19保存FIS到磁盘上

函数writefis

格式writefis(fismat)


writefis(fismat,'filename')

writefis(fismat,'filename','dialog')

说明writefis将一个MATLAB工作空间FIS结构fismat用一个.fis文件形式保存到磁盘上;

writefis(fismat)产生一个对话框让用户输入文件的名称和存放文件的目录;

writefis(fismat,'filename')将对应于FIS结构fismat的一个.fis文件写到一个称为filename.fis的磁盘文件中,不使用对话框该文件被保存在当前目录中;

writefis(fismat,'filename','dialog')创建一个带有提供的缺省名为filename.fis的对话框;

若扩展名不存在,则只为filename添加.fis扩展名。

例6-34

>>a=newfis('tipper');

>>a=addvar(a,'input','service',[010]);

>>a=addmf(a,'input',1,'poor','gaussmf',[1.50]);

>>a=addmf(a,'input',1,'good','gaussmf',[1.55]);

>>a=addmf(a,'input',1,'excellent','gaussmf',[1.510]);

>>writefis(a,'my_file')

结果为

ans=

my_file

6.2.20显示FIS的规则

函数showrule

格式showrule(fis)

showrule(fis,indexList)

showrule(fis,indexList,format)

showrule(fis,indexList,format,Lang)

说明此命令用于显示与给定系统相关的规则。

fis是必须提供的变量,这是一个FIS结构在MATLAB工作空间中的变量名;

indexList是你要显示的规则向量(可选项);

format是一个表示返回规则格式的字符串(可选项),showrule可以用三种不同格式的任意一种返回规则:'verbose'(缺省模式,此处English是缺省语言),'symbolic'和'indexed',它们用于隶属度函数的索引引用;

若要使用第四个参数Lang,则Lang必须是verbose(语言)型的,并且下面这种调用showrule(fis,indexList,format,Lang)使用Lang给定的语言显示规则,它们必须是'english','francais'或'deutsch'。

例6-35

>>a=readfis('tipper');

>>showrule(a,1)

ans=

1.If(serviceispoor)or(foodisrancid)then(tipischeap)(1)

>>showrule(a,2)

ans=

2.If(serviceisgood)then(tipisaverage)(1)

>>showrule(a,[31],'symbolic')

ans=

3.(service==excellent)|(food==delicious)=>(tip=generous)(1)

1.(service==poor)|(food==rancid)=>(tip=cheap)(1)

>>showrule(a,1:3,'indexed')

ans=

11,1(1):2

20,2(1):1

32,3(1):2

6.2.21显示FIS结构的所有属性

函数showfis

格式showfis(fismat)

说明以分行方式显示MATLAB工作空间FIS变量fismat,允许你查看结构的每个域的意义和内容。

例6-36

>>a=readfis('tipper');

>>showfis(a)

结果为

Nametipper

Typemamdani

Inputs/Outputs[21]

NumInputMFs[32]

NumOutputMFs3

NumRules3

AndMethodmin

OrMethodmax

ImpMethodmin

AggMethodmax

DefuzzMethodcentroid

InLabelsservice

food

OutLabelstip

InRange[010]

[010]

OutRange[030]

InMFLabelspoor

good

excellent

rancid

delicious

OutMFLabelscheap

average

25.generous

InMFTypesgaussmf

gaussmf

gaussmf

trapmf

30.trapmf

31.OutMFTypestrimf

32.trimf

33.trimf

InMFParams[1.5000]

[1.5500]

36.[1.51000]

[0013]

[791010]

OutMFParams[05100]

[1015200]

[2025300]

RuleAntecedent[11]

[20]

[32]

RuleConsequent1

2

3

RuleWeigth1

1

1

RuleConnection2

1

 

  • 7
    点赞
  • 89
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 要使用Matlab绘制模糊函数,首先需要安装并打开Matlab软件。然后,根据所需的模糊函数的特性和函数表达式,使用Matlab编写相应的代码来定义模糊函数。 在Matlab,可以使用plot函数绘制函数图像。假设我们要绘制一个简单的模糊函数,可以采用高斯模糊函数作为例子。高斯模糊函数的表达式为: f(x) = exp(-(x^2)/(2*σ^2)) 其,x为自变量,σ为标准差。 在Matlab,可以先定义自变量x的取值范围,比如从-5到5,然后通过计算每个x对应的函数值,得到函数的值域,最后使用plot函数绘制函数图像。 下面是一个使用Matlab绘制高斯模糊函数的例子代码: ```matlab x = -5:0.1:5; % 自变量取值范围 sigma = 1; % 标准差 f = exp(-x.^2/(2*sigma^2)); % 高斯模糊函数表达式 plot(x, f); % 绘制函数图像 xlabel('x'); % 设置x轴标签 ylabel('f(x)'); % 设置y轴标签 title('高斯模糊函数图像'); % 设置图像标题 ``` 运行上述代码,Matlab会生成一个新的窗口,并在其绘制出高斯模糊函数的图像。可以通过调整自变量的范围和标准差的值来改变函数图像的形状和模糊程度。 除了高斯模糊函数,根据实际需求,还可以使用其他的模糊函数表达式进行绘制。只要将相应的函数表达式写入Matlab的代码,并使用plot函数进行绘制,即可得到相应的模糊函数图像。 ### 回答2: 在MATLAB,可以使用fuzzylogic工具箱来绘制模糊函数。首先,需要创建一个模糊推理系统对象,可以使用命令fuzzy 生成。接下来,可以使用addInput和addOutput命令来添加输入和输出变量。然后,可以使用addMF命令来添加输入和输出变量的隶属函数。每个隶属函数都具有一个名称、类型(例如“三角形”或“梯形”)和参数,例如控制隶属函数的形状和范围。 一旦定义了模糊推理系统对象的输入和输出变量以及它们的隶属函数,就可以使用plot命令来绘制模糊函数。该命令可以用于绘制输入和输出隶属函数模糊集合,并显示它们之间的关系。绘图时可以选择绘制某个特定的隶属函数,也可以绘制整个输入或输出变量的隶属函数绘制模糊函数的一个例子如下: ```matlab % 创建模糊推理系统对象 fis = fuzzy; % 添加输入变量 fis = addInput(fis, [0 10], 'Name', '输入变量'); % 添加输入变量的隶属函数 fis = addMF(fis, '输入变量', '三角形', [1 2 3], 'Name', '函数1'); fis = addMF(fis, '输入变量', '梯形', [4 5 6 7], 'Name', '函数2'); % 添加输出变量 fis = addOutput(fis, [0 10], 'Name', '输出变量'); % 添加输出变量的隶属函数 fis = addMF(fis, '输出变量', '三角形', [2 4 6], 'Name', '函数3'); fis = addMF(fis, '输出变量', '梯形', [4 6 8 10], 'Name', '函数4'); % 绘制输入变量的隶属函数 subplot(2,1,1); plotmf(fis, 'input', 1); title('输入变量隶属函数'); % 绘制输出变量的隶属函数 subplot(2,1,2); plotmf(fis, 'output', 1); title('输出变量隶属函数'); ``` ### 回答3: 在Matlab,可以使用模糊系统工具箱(Fuzzy Logic Toolbox)来绘制模糊函数。 首先,需要创建一个模糊系统对象。可以通过以下代码创建一个模糊系统对象: ```matlab fis = newfis('fis_name'); ``` 然后,可以使用addvar函数来添加输入和输出变量。例如,可以使用以下代码添加一个输入变量: ```matlab fis = addvar(fis, 'input', 'input_name', [min_value max_value]); ``` 其,'input'表示输入变量类型,'input_name'为变量名称,min_value和max_value分别为变量的最小值和最大值。 接下来,可以使用addmf函数来添加模糊集。例如,可以使用以下代码添加一个三角形模糊集: ```matlab fis = addmf(fis, 'input', 'mf_name', 'trimf', [a b c]); ``` 其,'input'表示要添加模糊集的变量名称,'mf_name'为模糊集名称,'trimf'表示三角形模糊集,[a b c]为模糊集的参数。 然后,可以使用plotmf函数绘制模糊集。例如,可以使用以下代码绘制之前添加的三角形模糊集: ```matlab plotmf(fis, 'input', 'mf_index'); ``` 其,'input'为变量名称,'mf_index'为模糊集的索引。 绘制模糊集后,可以使用showfis函数来显示模糊系统的结构和模糊集。例如,可以使用以下代码显示之前创建的模糊系统: ```matlab showfis(fis); ``` 最后,使用输入值来计算输出值。可以使用evalfis函数来计算输出值。例如,可以使用以下代码计算模糊系统的输出值: ```matlab output = evalfis(input, fis); ``` 其,input为输入值,fis为之前创建的模糊系统对象。 通过上述步骤,可以在Matlab绘制和使用模糊函数

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值