%数据点个数51numpts=51;x1=linspace(0,1,numpts);y=.6*sin(pi*x1)+.3*sin(3*pi*x1)+.1*sin(5*pi*x1);data=[x1'y'];%整个数据集trndata=data(1:2:numpts,:);%训练数据集chkdata=data(2:2:numpts,:);%测试数据集%训练数据和检验数据的分布曲线plot(trndata(:,1),trndata(:,2),'o',chkdata(:,1),chkdata(:,2),'x')%建立T_S模糊模型%采用genfis1()函数直接由训练数据生成模糊推理系统nummfs=5;%隶属度函数个数mftype='gbellmf';%隶属度函数类型fismat=genfis1(trndata,nummfs,mftype);%绘制模糊推理系统的初始隶属度函数[x,mf]=plotmf(fismat,'input',1);figureplot(x,mf);title('initialmenbershipfunctions')%使用函数anfis()进行神经模糊建摸numepochs=40;%训练次数40[fismat1,truerr,ss,fismat2,chkerr]=anfis(trndata,fismat,numepochs,nan,chkdata);%计算训练后神经模糊系统的输出与训练数据的均方根误差trnout=evalfis(trndata(:,1),fismat1);trnrmse=norm(trnout-trndata(:,2))/sqrt(length(trnout));%绘制训练过程中均方根误差的变化情况epoch=1:numepochs;figureplot(epoch,truerr,'o',epoch,chkerr,'x')holdonplot(epoch,[truerr,chkerr]);holdoff%绘制训练过程中的步长的变化的情况figureplot(epoch,ss,'-',epoch,ss,'x');%绘制训练后模糊推理系统的隶书度函数曲线[x,mf]=plotmf(fismat1,'input',1);figureplot(x,mf)title('fiualmembershipfunction');%绘制神经模糊推理系统的输出曲线anfis_y=evalfis(x1,fismat1);figureplot(x1,y,'-',x1,anfis_y,'x');