利用神经网络进行曲线拟合

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

闲来无事,利用神经网络进行曲线拟合

目的:拟合正弦曲线;

数据源:正弦曲线+扰动,来自y=sin(x)+n;

测试数据:来自y=sin(x);

神经网络:BP神经网络,nntool工具箱;

网络:1×10×1;即单隐含层,且隐含层有10个节点;MATLAB代码:

%%

%本例使用神经网络模拟曲线拟合

%%

clc

clear

%%

x=linspace(-2*pi,2*pi,100);%生成输入数据

y=sin(x);%求出输入数据对应的目标值

n=0.1*rand(1,length(x));%对目标值加入干扰

y=y+n;%求出实际目标值

%%

[xx,ps]=mapminmax(x);%对x进行归一化

Data_input=xx;%网络训练输入

Data_target=y;%网络训练输入对应的目标值

Data_test=linspace(-5,5,20);%网络测试数据

Data_t=mapminmax('apply',Data_test,ps);%网络测试数据归一化

Data_true=sin(Data_test);%网络测试数据对应的目标值

%%

%打开nntool,利用输入输出数据训练网络,网络命名为network

%%

Data_y=sim(network,Data_t);%利用训练好的网络求出测试数据对应的实际输出值%%

figure(1)

e=Data_true-Data_y;

plot(e)%绘制误差曲线

xlabel('X轴');

ylabel('Y轴');

legend('误差')

%%

figure(2)

plot(Data_test,network1_outputs,'*',x,y) xlabel('X轴');

ylabel('Y轴');

legend('预测值','实际值','location','NorthEast')

下面具体说明nntool工具箱的使用:

命令行输入nntool:

打开工具箱界面:

单击Import,导入训练数据,并选择对应的训练类型,如图所示:

新建网络,命名为network,采用BP神经网络,即误差反向算法,选择Input data和Target data,其他选项默认,点击Create创建BP神经网络,如下图所示:

点击View,可以预览网络结构,如下图所示:

返回主界面,选中新建的network,然后点击Open打开,选择Train,再次选择Inputs和Targets,开始训练网络,点击Tarin netwrk

训练过程和结果如下图所示:

为了便于在M文件中使用新建的network,可以将其导出到工作空间,点击Export:

工作空间中出现network,如下图所示:

接下来可以使用sim函数求网络对测试数据的输出,并绘制误差曲线:

结果:

利用神经网络进行曲线拟合

11 /

11

可以看出,拟合效果很好

相关文档
最新文档