gusucode.com > 《MATLAB神经网络超级学习手册》随书光盘源码程序 > code/8/N8_5_2.m

    clc
clear all

%%%%%%%%产生输入变量x1 x2%%%%%%%%%%%%%%%
x=rand(2,200);
%将x转换到[-1 1]之间
x=(x-0.5)*1*2;
x1=x(1,:);
x2=x(2,:);

%%%%%%%%产生输出变量y%%%%%%%%%%%%%%%%%%
y=30+x1.^2-5*cos(2*pi*x1)+3*x2.^2-5*cos(2*pi*x2); 

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

%%%%%%%%建立测试样本%%%%%%%%%%%%%%%%%%
[n,m]=meshgrid(-1:0.1:1);
row=size(n);
tx1=n(:);
tx1=tx1';
tx2=m(:);
tx2=tx2';
tx=[tx1;tx2];

%%%%%%%%网络仿真%%%%%%%%%%%%%%%%%%%%%%%
t=sim(net,tx);

%%%%%%%%绘制3维图%%%%%%%%%%%%%%%%%
figure(2)
%网络仿真得到的函数图像
p=reshape(t,row);
subplot(1,3,1)
mesh(n,m,p);
zlim([0,50])
title('仿真结果图象')
%目标函数图像
[x1, x2]=meshgrid(-1:0.1:1);
y=30+x1.^2-5*cos(2*pi*x1)+3*x2.^2-5*cos(2*pi*x2); 
subplot(1,3,2)
mesh(x1,x2,y);
zlim([0,50])
title('目标函数图像')
%目标函数图象和仿真函数图象的误差图像
subplot(1,3,3)
mesh(x1,x2,y-p);
zlim([-0.1,0.05])
title('误差图像')
set(gcf,'position',[400 ,280,880,390])