Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- %Utilizando a estrutura de rede neurofuzzy implementada em sala de aula, resolva os problemas de identificação da parábola e exemplo 3, pag 351 do livro.
- %Resolver os mesmos problemas utilizando as funções GENFIS e MatLab.
- function [ysv, eqm, ysj] = neurofuzzy(xt,yt,xv,ydv,maxG,n,m,alpha)
- xt = xt(:);
- yt = yt(:);
- xv = xv(:);
- ydv = ydv(:);
- % c(1:n,1:m) = rand;
- % s(1:n,1:m) = rand;
- % p(1:n,1:m) = 2*rand-1;
- % q(1:m) = 2*rand-1;
- npt = length(xt);
- xmin=min(xt);
- xmax=max(xt);
- delta=(xmax-xmin)/(m-1);
- for j=1:m
- for i=1:n
- c(i,j)=xmin(i)+(j-1)*delta(i);
- p(i,j)=2*rand-1;
- s(i,j)=delta(i)/(2*sqrt(log(4)));
- end
- q(j)=2*rand-1;
- end
- dyjdqj = 1;
- for G = 1:maxG
- for k = 1:npt
- %ys = yt;
- [ys, y, w, b] = yst(c,s,p,q,m,n,xt(k,:));
- dedys = ys - yt(k);
- for j = 1:m
- dysdyj = w(j)/b;
- dysdwj = (y(j) - ys)/b;
- dedqj = dedys*dysdyj*dyjdqj;
- for i = 1:n
- dyjdpij = xt(k,i);
- dwjdsij = (w(j) * ((( xt(k,i) - c(i,j) )^2)/s(i,j)^3) );
- dwjdcij = (w(j) * (( xt(k,i) - c(i,j) )/s(i,j)^2) );
- dedpij = dedys*dysdyj*dyjdpij;
- dedsij = dedys*dysdwj*dwjdsij;
- dedcij = dedys*dysdwj*dwjdcij;
- c(i,j) = c(i,j) - alpha*dedcij;
- s(i,j) = s(i,j) - alpha*dedsij;
- p(i,j) = p(i,j) - alpha*dedpij;
- end
- q(j) = q(j) - alpha*dedqj;
- end
- ysj(k) = yst(c,s,p,q,m,n,xv(k,:));
- end
- for ij = 1:length(xv)
- ysv(ij) = yst(c,s,p,q,m,n,xv(ij,:));
- end
- for ik = 251:length(xv)
- ysj(ik) = yst(c,s,p,q,m,n,xv(ik,:));
- end
- eqm(G) = calcErro(xv,ydv,ysv');
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement