打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
利用神经网络进行曲线拟合,MATLAB实现
    闲来无事,利用神经网络进行曲线拟合
目的:拟合正弦曲线;
数据源:正弦曲线+扰动,来自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和Targetdata,其他选项默认,点击Create创建BP神经网络,如下图所示:


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

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


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


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


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

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



结果:


可以看出,拟合效果很好
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
pybrain的使用
matlab读取串口数据并显示曲线
神经网络实验:万能函数拟合器
跟我学MATLAB (第一讲:深度学习-神经网络)
曲线拟合法的Mat lab 实现
matlab中多组变量绘图:plot
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服