在撰写本文之前需要感谢几位博主关于RBFNN的讲解,也是在参考了各方的资料,学习以后,才诞生了我的这篇博文。这里给出传送门,文中也会提到哪里可以参阅这些文献,所以也可以顺着本文的思路下来看:
[1] https://www.cnblogs.com/pinking/p/9349695.html
[2] https://blog.csdn.net/weixin_40802676/article/details/100805545
[3] https://blog.csdn.net/chenyanqiao2010/article/details/52463683
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

%RBF神经网络实现函数拟合
%输入:X为自变量
%输出:y为因变量

%%------输入输出的定义------%%
X=[0 0 1 1;
   0 1 0 1];
y=[0 1 1 0];

%%-----RBFNN的构建-----%%
%使用newrb函数
net=newrb(X,y,0.001,1,1000,10);
%#2# net=newrb(X,y);
%均方误差设计为0.001,spread设置为1,最大神经元设置为1000,每次增加神经元个数设置为10

%使用newrbe函数
%#3# net=newrbe(X,y,1);
%#4# net=newrbe(X,y);
%spread设计为1,也可以不用这个参数

%%------测试样本-------%%
%考察x1,x2在0~1区域内的取值
x_test_1=0:0.1:1;
x_test_2=0:0.1:1;
[ii,jj]=meshgrid(0:0.1:1,0:0.1:1);
%为了方便x1,x2的一一对应,分别用X_test_1,X_test_2来存放,并用X_test来定义这些采样点
X_test_1=ii(:)';
X_test_2=jj(:)';
X_test=[X_test_1;X_test_2];
%利用建立好的RBFNN进行测试,此时网络框架结构已经经过训练完成
y_test=sim(net,X_test);
%后面需要用到这个值,所以定义为一个变量
SampleNumber=length(x_test_1);

%由于y_test是一个列向量,为了作图与可视化,我们需要把他排成一个SampleNumber*SampleNumber的矩阵
y_visible=zeros(length(x_test_1));
for row=1:SampleNumber
    for col=1:SampleNumber
        y_visible(row,col)=y_test((col-1)*SampleNumber+row);
    end
end

figure(1)
mesh(ii,jj,y_visible);
hold on
scatter3(0,0,0,'rp','LineWidth',3);
scatter3(0,1,1,'rp','LineWidth',3);
scatter3(1,0,1,'rp','LineWidth',3);
scatter3(1,1,0,'rp','LineWidth',3);

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述