基本FIS编辑器(MATLAB模糊逻辑工具箱函数)-

发布时间 : 星期六 文章基本FIS编辑器(MATLAB模糊逻辑工具箱函数)- 更新完毕开始阅读

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

fismat = genfis2(Xin,Xout,0.5)

这是使用此函数所需的最小变量数。这里对所有数据维指定0.5的作用范围。 fismat = genfis2(Xin,Xout,[0.5 0.25 0.3])

这里假定组合的维数是3。假设Xin有两维、Xout有一维,那么,0.5和0.25是Xin数据维中每一维的作用范围,0.3是Xout数据维的作用范围。 fismat = genfis2(Xin,Xout,0.5,[-10 -5 0; 10 5 20])

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

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转换为Sugeno FIS

函数 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([2 1; 4 9],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),使用Load Data按钮输入数据,刚进入GUI时,对每种方法的选项都设置为缺省值。 此工具使用多维数据集,但只显示这些维数中的两维。使用X-axis和Y-axis下的下拉式标签选择你想观察的数据维。例如你有一个五维数据集,按照出现在数据集中的顺序,此工具将数据标记为data_1,data_2,data_3,data_4,data_5, Start将完成聚类,Save Centre将保存聚类中心。

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

>>findcluster('clusterdemo.dat')

6.2.8 绘制一个FIS

函数 plotfis 格式 plotfis(fismat)

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

联系合同范文客服:xxxxx#qq.com(#替换为@)