⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bp_approximation_nolinear_fun.m

📁 此为BP感知神经分类器,自己写的.有须要的请下载,很不错的.
💻 M
字号:
%设计一个BP网络用于对非线性函数逼近.对过改变该函数的参数及BP网络隐层神经元数目来观察训练时间及误差的变化情况
%***********************************
%逼近的非线性函数为正弦函数其频率参数可以调节
%建立非线性函数信号
p=[-1:.05:1];
k=1;                    %设k=1;
t=sin(k*pi*p);          %正弦信号
figure(1);
plot(p,t,'-');
title('要逼近的非线性函数');
xlabel('时间');
ylabel('非线性函数');
%**************************************
%newff函数建立BP网络,隐单元神经元数目n可以改变,先取为10,神经元的传递函数分别为tansig purelin
%BP网络反传函数为trainlm
net=newff(minmax(p),[10,1],{'tansig' 'purelin'},'trainlm');  %{}中一定要空格
%**************************************
%对建立的网络进行训练前看看利用sim()函数仿真结果
y1=sim(net,p);                                                %对网络进行仿真
figure(2);
plot(p,t,'-',p,y1,'--');                                      %将原来信号与通过网络后信号画在一个图中.
title('没有训练的网络输出与原函数比较仿真结果');
xlabel('时间');
ylabel('仿真输出--    原函数-');
%未经训练的仿真输出效果很差与原函数相差很大,而且每次运行后结果不一样
%***************************************
%对网络进行训练
%使用train对网络训练前,先设置训练参数,训练时间50个单位时间.训练目标误差小于0.01其他默认
net.trainParam.epochs=50;
net.trainParam.goat=0.01;
net=train(net,p,t);
%****************************************
%对网络进行测试
%先对训练好后的网络用sim进行仿真
y2=sim(net,p);
figure(3);
plot(p,t,'-',p,y1,'--',p,y2,'+')
title('网络训练后的仿真结果');
xlabel('时间');
ylabel('仿真输出');
%仿真结果表明函数逼近很好

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -