使用newgrrn函数对非线性曲线进行逼近

本例子来自何正风主编的《 MATLAB神经网络技术》一书,适合新手练习。

newgrnn函数

net = newgrnn(P,T,spread)

参数P为输入向量;T为输出向量;spread 为径向基函数的分布密度,参数spread的大小对网络的逼近精度有较大影响,需不断的调整spread的值。spread的值越小,函数的比较越精确,但逼近过程就越粗糙;spread的值越大,逼近过程就比较平滑,但逼近的误差会比较大。

y = 2 * x.^6 + 3 * x^5 + 3x^3 - 2 * x^2 进行逼近演示:

% 使用newgrnn函数创建广义回归网络,
% 对非线性曲线 y = 2 * x.^6 + 3 * x^5 + 3x^3 - 2 * x^2 进行逼近

clc;
x = -2:0.01:1;
y = 2 * x.^6 + 3 * x.^5 + 3 * x.^3 - 2 * x.^2;
P = x(1:15:end);
T = y(1:15:end);

% 实现不同的spread下广义回归神经网络函数逼近效果
spread = [0.05 0.2 0.4 0.6 0.8 1];  % 3组不同的spread值
line_style = {'k.-.','r*:','mo-.','bo--','k^-','bx-'};
for i = 1:length(spread)
    net = newgrnn(P,T,spread(i));
    A = sim(net,P);
    plot(P,A,line_style{i});
    hold on;
end
plot(P,T,'o');
legend('spread = 0.05','spread = 0.2','spread = 0.4','spread = 0.6','spread = 0.8','spread = 1','训练数据');

仿真效果图如下:

拟合效果对比图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值