| 查看: 3658 | 回复: 0 | ||
[求助]
ANFIS代码原理求解答
|
|
%% Your Solution clc;close all;clear all; numPts=51; x=linspace(-1,1,numPts); y=0.5*sin(pi*x)+0.3*sin(3*pi*x)+0.1*sin(5*pi*x); data=[x' y']; trnData=data(1:2:numPts, ;%%训练数据chkData=data(2:2:numPts, ;%%检验数据%% 绘制训练和检验数据的分布曲线 subplot(2,2,1);plot(trnData(:,1),trnData(:,2),'o',chkData(:,1),chkData(:,2),'x'); legend('训练数据','检验数据','location','northwest');%%添加图例 title('训练数据和检验数据的分布曲线');%%添加图题 xlabel('(1)');%%添加X轴标题 %% 采用genfis1()函数直接由训练数据生成Takagi-Sugeno型模糊推理系统 numMFS=5; mfType='gbellmf'; %输入隶属度函数的个数、类型 fisMat=genfis1(trnData,numMFS,mfType); %初始模糊推理系统 subplot(2,2,2);[x1,mf]=plotmf(fisMat,'input',1); plot(x1,mf);title('系统训练前的隶属度函数');xlabel('(2)'); %% 根据给定的训练数据,利用函数anfis()训练自适应神经模糊系统 epochs=40; %训练次数为40 trnOpt=[epochs NaN NaN NaN NaN]; disOpt=[ ]; [Fis, error, stepsize, chkFis, chkEr]=anfis(trnData,fisMat,trnOpt,disOpt,chkData); %% 绘制模糊推理系统由函数anfis()训练后的输入变量的隶属度函数曲线 subplot(2,2,3); [x1,mf]=plotmf(Fis,'input',1); plot(x1,mf); title('系统训练后的隶属度函数'); xlabel('(3)'); %% 计算训练后神经模糊系统的输出与训练数据的均方根误差trnRMSE trnOut1=evalfis(trnData(:,1),Fis); %训练后神经模糊系统输出 trnOut2=evalfis(trnData(:,1),chkFis); trnRMSE1=norm(trnOut1-trnData(:,2))/sqrt(length(trnOut1)); trnRMSE2=norm(trnOut2-trnData(:,2))/sqrt(length(trnOut2)); %% 计算和绘制神经模糊推理系统的输出曲线 anfis_y1=evalfis(x,Fis); anfis_y2=evalfis(x,chkFis); subplot(2,2,4);plot(x,y,'-',x,anfis_y1,'x',x,anfis_y2,'o'); title('函数输出和ANFIS系统输出');xlabel('(4)'); legend('原函数的输出','ANFIS-1的输出','ANFIS-2的输出','location','northwest') writefis(Fis,'ex6-3'); —————————————————— 以上是matlab中ANFIS的例子代码,有几个地方没有看懂,希望大神们给予解答; 首先是 trnOut1=evalfis(trnData(:,1),Fis); %训练后神经模糊系统输出 trnOut2=evalfis(trnData(:,1),chkFis); 为什么这里trnOut1和trnOut2的输入数据都是trnData(:,1),,,,而trnOut2的输入数据不是chkData(:,1)。 第二个问题就是为啥ANFIS最后要有两个输出呢,分别代表的是什么呢。 求助大神们,很着急!!!谢谢 |
» 猜你喜欢
什么是人一生最重要的?
已经有4人回复
版面费该交吗
已经有3人回复
过年走亲戚时感受到了所开私家车的鄙视链
已经有10人回复
今年春晚有几个节目很不错,点赞!
已经有12人回复
体制内长辈说体制内绝大部分一辈子在底层,如同你们一样大部分普通教师忙且收入低
已经有12人回复
基金正文30页指的是报告正文还是整个申请书
已经有5人回复













;%%训练数据
回复此楼