输出结果展示:

完整代码:

clear;close all;

gamma=0.75;%设定惯性因子

eps1=0.005;%设定停止训练的条件参数

m1=8;%设定隶属函数个数

m2=8;

a=-1;b=1;

w0=a+(b-a)*rand(1,m1*m2);%初始化权值阵

for i=1:2

switch i

case 1,beta=0.75;%设定学习率

otherwise,beta=0.25;

end

c=[2/7*(0:m1-1)-1;2/7*(0:m2-1)-1];%初始化Cij

sigma=0.1213*ones(2,m1);%初始化σij 

w=w0;

mu=zeros(2,m1);%初始化隶属度层

alpha=zeros(1,m1*m2);%初始化规则层

alpha_=zeros(1,m1*m2);%初始化归一化层

delta2=zeros(2,m1);%初始化δ2

dw=zeros(1,m1*m2);%初始化权值变化量

dc=zeros(2,m1);%初始化c变化量

dsigma=zeros(2,m1);%初始化σij变化量

%----------------训练过程----------------%

err=1;%初始化误差

er=[];

counter=0;%统计训练步数

while(err>=eps1)

Par_E_w=zeros(1,m1*m2);%误差对权值阵的偏导数

Par_E_c=zeros(2,m1);%误差对c的偏导数

Par_E_sigma=zeros(2,m1);%误差对σ的偏导数

E=0;

for x1=-1:2/19:1

for x2=-1:2/19:1

yd=sin(pi*x1)*cos(pi*x2);%期望输出,导师信号

%正向传播

mu(1,:)=exp(-(x1-c(1,:)).^2./sigma(1,:).^2);%计算隶属度层

mu(2,:)=exp(-(x2-c(2,:)).^2./sigma(2,:).^2);

s=zeros(2,m1,m1*m2);%初始化Sij

for m=1:m1

for n=1:m2

alpha((m-1)*m2+n)=min(mu(1,m),mu(2,n));%计算规则层(取小运算)

if mu(1,m)<=mu(2,n)

s(1,m,(m-1)*m2+n)=1;

end

if mu(1,m)>=mu(2,n)

s(2,n,(m-1)*m2+n)=1;

end

end

end

alpha_=alpha/sum(alpha);%计算归一化层

y=alpha_*w.';%计算网络输出

E=E+1/2*(yd-y)^2;%计算误差

%反向传播

delta5=yd-y;

delta4=delta5*w;

for k=1:m1*m2

delta3(k)=delta4(k)*(sum(alpha)-alpha(k))./sum(alpha)^2;

end

for m=1:2

for n=1:m1

delta2(m,n)=0;

for l=1:m1*m2

delta2(m,n)=delta2(m,n)+delta3(l)*s(m,n,l)*mu(m,n);

end

end

end

Par_E_w=Par_E_w-delta5*alpha_;%计算偏导数

Par_E_c(1,:)=Par_E_c(1,:)-2*delta2(1,:).*(x1-c(1,:))./sigma(1,:).^2;

Par_E_c(2,:)=Par_E_c(2,:)-2*delta2(2,:).*(x2-c(2,:))./sigma(2,:).^2;

Par_E_sigma(1,:)=Par_E_sigma(1,:)-2*delta2(1,:).*(x1-c(1,:)).^2./sigma(1,:).^3;

Par_E_sigma(2,:)=Par_E_sigma(2,:)-2*delta2(2,:).*(x2-c(2,:)).^2./sigma(2,:).^3;

end

end

num=20*20;

Par_E_w=Par_E_w/num;

Par_E_c=Par_E_c/num;

Par_E_sigma=Par_E_sigma/num;

dw=-beta*Par_E_w+gamma*dw;

dc=-beta*Par_E_c+gamma*dc;

dsigma=-beta*Par_E_sigma+gamma*dsigma;

w=w+dw;

c=c+dc;

sigma=sigma+dsigma;

counter=counter+1;

er(counter)=E/num;

err=E/num;

% if counter>1000

% break;

% end

end

%----------------测试过程----------------%

xx1=-1:2/19:1;

xx2=-1:2/19:1;

yd1=zeros(20,20);

for m=1:20

for n=1:20

yd1(m,n)=sin(pi*xx1(m))*cos(pi*xx2(n));%期望输出

mu(1,:)=exp(-(xx1(m)-c(1,:)).^2./sigma(1,:).^2);%计算隶属度层

mu(2,:)=exp(-(xx2(n)-c(2,:)).^2./sigma(2,:).^2);

for k=1:m1 %计算规则层

for l=1:m2

alpha((k-1)*m2+l)=min(mu(1,k),mu(2,l));

end

end

alpha_=alpha/sum(alpha);%计算归一化层

yr(m,n)=alpha_*w.'; %计算网络输出

end

end

errorf1=1/2*(yd1-yr).^2;%计算误差

xxx1=-1:2/11:1;

xxx2=-1:2/11:1;

yd2=zeros(12,12);

for m=1:12

for n=1:12

yd2(m,n)=sin(pi*xxx1(m))*cos(pi*xxx2(n));%期望输出

mu(1,:)=exp(-(xxx1(m)-c(1,:)).^2./sigma(1,:).^2);%计算隶属度层

mu(2,:)=exp(-(xxx2(n)-c(2,:)).^2./sigma(2,:).^2);

for k=1:m1 %计算规则层

for l=1:m2

alpha((k-1)*m2+l)=min(mu(1,k),mu(2,l));

end

end

alpha_=alpha/sum(alpha);%计算归一化层

yr2(m,n)=alpha_*w.'; %计算网络输出

end

end

errorf2=1/2*(yd1-yr).^2;%计算误差

%----------------绘图----------------%

figure(i);

sn=sprintf('β=%4.2f,γ=%4.2f',beta,gamma);

X=ones(size(xx2.'))*xx1;

Y=xx2.'*ones(size(xx1));

subplot(2,2,1);

surf(X,Y,yd1);

xlabel('x1');

ylabel('x2');

zlabel('期望的输出yd');

title(sn);

subplot(2,2,3);

surf(X,Y,yr);

xlabel('x1');

ylabel('x2');

zlabel('实际网络的输出yr');

title(sn);

subplot(2,2,2);

plot(er);

xlabel('训练步数');

ylabel('误差');

title(sn);

subplot(2,2,4);

surf(X,Y,errorf1);

xlabel('x1');

ylabel('x2');

zlabel('误差');

title(sn);

figure(i+2);

sn=sprintf('β=%4.2f,γ=%4.2f 泛化能力测试',beta,gamma);

X=ones(size(xxx2.'))*xxx1;

Y=xxx2.'*ones(size(xxx1));

subplot(2,1,1);

surf(X,Y,yd2);

xlabel('x1');

ylabel('x2');

zlabel('期望的输出yd');

title(sn);

subplot(2,1,2);

surf(X,Y,yr2);

xlabel('x1');

ylabel('x2');

zlabel('实际网络的输出yr');

title(sn);

beta

counter

end

Anfis-基于模糊推理的自适应神经网络程序(免费分享)相关推荐

  1. 基于自适应无迹卡尔曼滤波算法(AUKF)锂电池SOC估计,噪声系数自适应 Matlab程序

    基于自适应无迹卡尔曼滤波算法(AUKF)锂电池SOC估计,噪声系数自适应 Matlab程序 仿真模型建模数据mat Sci一篇参考文献 ID:77100657373800632张徳帅123

  2. 【基于zynq的卷积神经网络加速器设计】(一)熟悉vivado和fpga开发流程:使用Vivado硬件调试烧写hello-world led闪烁程序实现及vivado软件仿真

    HIGHLIGHT: vivado设计流程: note: 分析与综合 和 约束输入 可以调换顺序 [基于zynq的卷积神经网络加速器设计](一)熟悉vivado和fpga开发流程:使用Vivado硬件 ...

  3. Sugeno型(TS型)模糊推理系统及自适应神经网络的模糊推理系统(anfis)应用

    Sugeno(TS)型模糊推理系统线性形式 TS系统特点:输出量是输入量的线性函数,与Mamdani控制器的最大不同是没有清晰化模块,因为它的推理结果就是清晰值.同时,用清晰地输出函数uj=pje+q ...

  4. 深度学习阅读导航 | 05 基于光照感知深度神经网络的多光谱数据融合行人检测

    文章目录 摘要 一.引言 二.相关研究 2.1 可见光和热感行人检测 2.2 多光谱行人检测 三.我们的方法 3.1 建议模型概述 3.2 光照全连接神经网络(IFCNN) 3.3 光照感知双流深度卷 ...

  5. 在Autodesk应用程序商店发布基于浏览器的Web应用程序

    你一定已经听说过Autodesk应用程序商店了,通过Autodesk应用程序商店,你可以免费下载或购买来自全球的优秀开发者发布的应用程序,来帮助你更快更方便的完成你的工作.而且作为开发者,您也可以在A ...

  6. 轻松构建基于 Serverless 架构的小程序

    前言 自 2017 年第一批小程序上线以来,越来越多的移动端应用以小程序的形式呈现.小程序拥有触手可及.用完即走的优点,这大大降低了用户的使用负担,使小程序得到了广泛的传播.在阿里巴巴,小程序也被广泛 ...

  7. 基于VTK的MFC应用程序开发(2)

    基于VTK的MFC应用程序开发(2) 分类: VTK应用示例 2013-03-29 13:03 6647人阅读 评论(18) 收藏 举报 MFCVTK图像重采样 目录(?)[+] 现在基于VTK的MF ...

  8. input自适应_【正点原子FPGA连载】第十一章基于OV5640的自适应二值化实验-领航者ZYNQ之HLS 开发指南...

    1)摘自[正点原子]领航者ZYNQ之HLS 开发指南 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手 ...

  9. julia有 pytorch包吗_用 PyTorch 实现基于字符的循环神经网络 | Linux 中国

    导读:在过去的几周里,我花了很多时间用 PyTorch 实现了一个 char-rnn 的版本.我以前从未训练过神经网络,所以这可能是一个有趣的开始. 本文字数:7201,阅读时长大约: 9分钟 htt ...

最新文章

  1. 获取一个对象的属性/属性值,以及动态给属性赋值
  2. ZedGraph在Web中的使用
  3. MySQL ifnull()函数
  4. div动态消失的动画效果
  5. keepalived 和 zookeeper的区别
  6. ToString函数用法
  7. php递归返回值只有第一次的结果,php递归函数出现返回值问题的解决
  8. 关于惠普打印机可以打印但是无法扫描的问题
  9. linux下virtualbox安装win7虚拟机无法调整分辨率
  10. JAVA 接入微信扫码(Native)支付
  11. C#Mysql学生信息管理系统
  12. qbo_listen编译问题
  13. matlab计算斜方差_利用matlab进行协方差运算
  14. 气象雷达地物杂波产生的原因
  15. 程序员必备的chrome插件:体验极佳的CSDN插件
  16. No connection could be made because the target machine actively refused it 192.168.131.196:1888
  17. Linux操作系统知识点(上)
  18. eMMC工作模式 - 超详细原理讲解
  19. ASP.NET美容店管理系统 程序+文档
  20. 总结29 WEB服务器中HTTP的Request对象和BeanUtils之应用

热门文章

  1. matlab能量谱分析检验,Matlab谱分析的pwelch方法
  2. HEVC代码学习19:MV、MVD、MVP概念解析
  3. 房产测量程序lisp_房产测绘内业数据处理方法及软件应用
  4. 回顾一波春招找实习的艰苦岁月
  5. 2011年12月1日-2021年12月4日
  6. ResNet50模型识别二维化的心电信号——以MIT-BIH心律失常数据库为例
  7. 雷达遥感原理;侧视雷达成像系统;雷达回波强度的影响因素;雷达遥感及雷达图像的特征
  8. java实现excel导出图片
  9. 云计算介绍之网络介绍
  10. Oracle数据文件损坏无法正常修复问题