案例7rbf网络的非线性回归的实现

更新时间:2023-09-10 02:08:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

%% 案例7:RBF网络的回归-非线性函数回归的实现 % %

%

%% 清空环境变量 clc clear

%% 产生输入 输出数据 % 设置步长 interval=0.01;

% 产生x1 x2

x1=-1.5:interval:1.5; x2=-1.5:interval:1.5;

% 按照函数先求得相应的函数值,作为网络的输出。 F =20+x1.^2-10*cos(2*pi*x1)+x2.^2-10*cos(2*pi*x2);

%% 网络建立和训练

% 网络建立 输入为[x1;x2],输出为F。Spread使用默认。 net=newrbe([x1;x2],F)

%% 网络的效果验证

% 我们将原数据回带,测试网络效果: ty=sim(net,[x1;x2]);

% 我们使用图像来看网络对非线性函数的拟合效果 figure

plot3(x1,x2,F,'rd'); hold on;

plot3(x1,x2,ty,'b-.'); view(113,36)

title('可视化的方法观察准确RBF神经网络的拟合效果') xlabel('x1') ylabel('x2') zlabel('F') grid on

%% 清空环境变量 clc clear

%% 产生训练样本(训练输入,训练输出) % ld为样本例数 ld=400;

% 产生2*ld的矩阵 x=rand(2,ld);

% 将x转换到[-1.5 1.5]之间 x=(x-0.5)*1.5*2;

% x的第一列为x1,第二列为x2. x1=x(1,:); x2=x(2,:);

% 计算网络输出F值

F=20+x1.^2-10*cos(2*pi*x1)+x2.^2-10*cos(2*pi*x2);

%% 建立RBF神经网络

% 采用approximate RBF神经网络。spread为默认值 net=newrb(x,F);

%% 建立测试样本

% generate the testing data interval=0.1;

[i, j]=meshgrid(-1.5:interval:1.5); row=size(i); tx1=i(:); tx1=tx1'; tx2=j(:); tx2=tx2'; tx=[tx1;tx2];

%% 使用建立的RBF网络进行模拟,得出网络输出 ty=sim(net,tx);

%% 使用图像,画出3维图

% 真正的函数图像 interval=0.1;

[x1, x2]=meshgrid(-1.5:interval:1.5);

F = 20+x1.^2-10*cos(2*pi*x1)+x2.^2-10*cos(2*pi*x2); subplot(1,3,1) mesh(x1,x2,F); zlim([0,60])

title('真正的函数图像')

% 网络得出的函数图像 v=reshape(ty,row); subplot(1,3,2) mesh(i,j,v); zlim([0,60])

title('RBF神经网络结果')

% 误差图像 subplot(1,3,3) mesh(x1,x2,F-v); zlim([0,60])

title('误差图像')

set(gcf,'position',[300 ,250,900,400])

运行提示:

chapter7.1.m为严格(Exact)径向基网络来实现非线性的函数回归 chapter7.2.m为RBF网络对同一函数拟合

本文来源:https://www.bwwdw.com/article/j5lh.html

Top