Advertisement
Guest User

Untitled

a guest
Dec 11th, 2017
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.77 KB | None | 0 0
  1. %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.
  2. %Resolver os mesmos problemas utilizando as funções GENFIS e MatLab.
  3.  
  4. function [ysv, eqm, ysj] = neurofuzzy(xt,yt,xv,ydv,maxG,n,m,alpha)
  5. xt = xt(:);
  6. yt = yt(:);
  7. xv = xv(:);
  8. ydv = ydv(:);
  9. % c(1:n,1:m) = rand;
  10. % s(1:n,1:m) = rand;
  11. % p(1:n,1:m) = 2*rand-1;
  12. % q(1:m) = 2*rand-1;
  13. npt = length(xt);
  14.  
  15. xmin=min(xt);
  16. xmax=max(xt);
  17.  
  18. delta=(xmax-xmin)/(m-1);
  19.  
  20. for j=1:m
  21. for i=1:n
  22. c(i,j)=xmin(i)+(j-1)*delta(i);
  23. p(i,j)=2*rand-1;
  24. s(i,j)=delta(i)/(2*sqrt(log(4)));
  25. end
  26. q(j)=2*rand-1;
  27. end
  28.  
  29. dyjdqj = 1;
  30.  
  31. for G = 1:maxG
  32. for k = 1:npt
  33. %ys = yt;
  34. [ys, y, w, b] = yst(c,s,p,q,m,n,xt(k,:));
  35. dedys = ys - yt(k);
  36. for j = 1:m
  37. dysdyj = w(j)/b;
  38. dysdwj = (y(j) - ys)/b;
  39. dedqj = dedys*dysdyj*dyjdqj;
  40. for i = 1:n
  41. dyjdpij = xt(k,i);
  42. dwjdsij = (w(j) * ((( xt(k,i) - c(i,j) )^2)/s(i,j)^3) );
  43. dwjdcij = (w(j) * (( xt(k,i) - c(i,j) )/s(i,j)^2) );
  44. dedpij = dedys*dysdyj*dyjdpij;
  45. dedsij = dedys*dysdwj*dwjdsij;
  46. dedcij = dedys*dysdwj*dwjdcij;
  47. c(i,j) = c(i,j) - alpha*dedcij;
  48. s(i,j) = s(i,j) - alpha*dedsij;
  49. p(i,j) = p(i,j) - alpha*dedpij;
  50. end
  51. q(j) = q(j) - alpha*dedqj;
  52. end
  53. ysj(k) = yst(c,s,p,q,m,n,xv(k,:));
  54. end
  55. for ij = 1:length(xv)
  56. ysv(ij) = yst(c,s,p,q,m,n,xv(ij,:));
  57. end
  58. for ik = 251:length(xv)
  59. ysj(ik) = yst(c,s,p,q,m,n,xv(ik,:));
  60. end
  61. eqm(G) = calcErro(xv,ydv,ysv');
  62. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement