Matlab一个利用神经网络拟合函数的例子

代码:

t=[0 3.9 4.1 7.3 8.4 13.1 14.8 16.4 17.7 19 19.7 20.3 21.2 24.5 26.3 27.8 28.9 29 29.8 31.1 32.8 33.5 34.5 35.6 36.2 37.6 37.8 38.7 39.4 40.3 41 41.4 42.5 43.9 45 45.7 46.9 47.8 49 49.4 51.4 53 54 55.6 56.9 57.5 58.9 ];
R=[100.16 101.87 101.97 102.99 103.43 105.23 105.89 106.54 107.01 107.52 107.77 108.01 108.39 109.64 110.33 110.90 111.32 111.41 111.86 112.53 112.63 113.10 113.52 113.94 114.39 114.52 114.92 115.26 115.87 115.90 116.27 116.96 117.32 117.71 118.13 118.34 118.62 118.96 119.59 120.20 120.68 121.33 121.90 122.17 122.94 123.27 123.85];

subplot(2,2,1);plot(t,R,'r*'); hold on; 
% R=0.0002*t^2+0.3676*t+100.3780;
plot(t,0.0002*t.^2+0.3676*t+100.3780,':');   %绘制不含噪声的余弦曲线 
legend('训练样本','正确的曲线')
title('样本数据');

p=polyfit(t,R,2)
y1=polyval(p,t);
subplot(223),plot(t,R,'r*',t,0.0002*t.^2+0.3676*t+100.3780,'b:',t,y1,'g');
legend('训练样本','正确的曲线','拟合曲线'),grid;
% xlabel(sprintf('多项式:y=%.2fx^2+%.2fx+%.2f',p(1),p(2),p(3)));
% pretty(poly2sym(p))
 xlabel(sprintf('多项式:%s',poly2str(p,'x')));
title('最小二乘法的多项式拟合');

net=newff(minmax(t),[20,1],{'tansig','purelin'}); %创建一个新的前向神经网络 
net.trainFcn='trainlm'; %设置训练方法及参数 
net.trainParam.epochs=500; 
net.trainParam.goal=1e-6; 
net=init(net);%初始化网络 

[net,tr]=train(net,t,R); %调用相应算法训练BP网络 

A=sim(net,t); %对BP网络进行仿真 
E=R-A; %计算仿真误差 
MSE=mse(E);%均方误差 

subplot(224);plot(t,R,'*r',t,0.0002*t.^2+0.3676*t+100.3780,'b:',t,A,'g'); %绘制拟合结果曲线 
legend('训练样本*','真实曲线','拟合曲线');
xlabel(sprintf('均方误差(MSE):%e',MSE));
title('神经网络拟合');

可视化结果:
这里写图片描述

这里写图片描述

  • 10
    点赞
  • 97
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
MATLAB中,您可以使用神经网络工具箱来建立和训练一个基于反向传播(Backpropagation)算法的神经网络,从而拟合一个函数。下面是一个示例代码,演示如何使用BP神经网络拟合一个函数: ```matlab % 假设您有一个包含 x 和 y 坐标的训练集 x_train = linspace(-1, 1, 100); y_train = sin(pi*x_train); % 创建并配置神经网络 net = feedforwardnet(10); % 创建一个具有10个隐藏层神经元的前馈神经网络 net.trainParam.epochs = 1000; % 设置训练的迭代次数 % 训练神经网络 net = train(net, x_train, y_train); % 使用训练好的神经网络进行预测 x_test = linspace(-1, 1, 1000); y_test = sim(net, x_test); % 绘制原始函数拟合曲线 figure; plot(x_train, y_train, 'o', 'MarkerSize', 4); % 绘制训练集 hold on; plot(x_test, y_test, 'r', 'LineWidth', 2); % 绘制拟合曲线 hold off; grid on; legend('训练集', '拟合曲线'); xlabel('x'); ylabel('y'); title('BP神经网络拟合函数'); ``` 在上面的代码中,我们首先定义了一个包含x和y坐标的训练集。然后,我们使用`feedforwardnet`函数创建一个前馈神经网络,其中具有10个隐藏层神经元。您可以根据需要调整隐藏层神经元的数量和网络结构。接下来,我们设置训练的迭代次数,并使用`train`函数训练神经网络。然后,我们使用训练好的神经网络对一系列新的x值进行预测,并得到相应的y值。最后,我们使用`plot`函数绘制原始函数拟合曲线。 请注意,上述示例中假设要拟合函数为sin(pi*x),您可以根据需要更改训练集和要拟合函数。 希望这能到您!
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值