<<MATLAB神经网络超级学习手册>>
一.BP网络在函数逼近中的应用
例1.要求设计一个BP网络,逼近以下函数:g(x) = 1+sin(k·pi/2·x),实现对该非线性函数的逼近.其中,分别令k=2,3,6进行仿真,通过调节参数得到信号的频率与隐含层节点之间、隐含层节点与函数逼近能力之间的关系.
解:假设频率参数k=2,绘制要逼近的非线性函数的目标函数.MATLAB代码如下.
k=2;
p=[-1:0.05:8];
t = 1+sin(k*pi/2*p);
plot(p,t,'-');
title('要逼近的非线性函数');
xlabel('时间');
ylabel('非线性函数');
得到目标曲线函数图像.
用newff()函数创建BP网络结构.隐含层神经元数目n可以改变,暂设n=5,输出层有一个神经元.选择隐含层和输出层神经元传递函数分别用tansig函数和purelin函数,网络训练的算法采用Levenberg-Marquardt算法trainlm.
clc;clear;
k=2;
p=[-1:0.05:8];
t = 1+sin(k*pi/2*p);
% plot(p,t,'-');
% title('要逼近的非线性函数');
% xlabel('时间');
% ylabel('非线性函