matlab实现RBF的相关函数

摘自《matlab神经网络43个案例分析》

(1)newrb()

该函数可以用来设计一个近似径向基网络(approximate RBF)。调用格式为:

[net,tr]=newrb(P,T,GOAL,SPREAD,MN,DF)

其中P为Q组输入向量组成的R*Q位矩阵,T为Q组目标分类向量组成的S*Q维矩阵。GOAL为均方误差目标(Mean Squard Error Goal),默认为0.0;SPREAD为径向基函数的扩展速度,默认为1;MN为神经元的最大数目,默认为Q;DF维两次显示之间所添加的神经元数目,默认为25;ner为返回值,一个RBF网络,tr为返回值,训练记录。

用newrb()创建RBF网络是一个不断尝试的过程(从程序的运行可以看出来),在创建过程中,需要不断增加中间层神经元的和个数,知道网络的输出误差满足预先设定的值为止。

(2)newrbe()

该函数用于设计一个精确径向基网络(exact RBF),调用格式为:

net=newrbe(P,T,SPREAD)

其中P为Q组输入向量组成的R*Q维矩阵,T为Q组目标分类向量组成的S*Q维矩阵;SPREAD为径向基函数的扩展速度,默认为1

和newrb()不同的是,newrbe()能够基于设计向量快速,无误差地设计一个径向基网络。

(3)radbas()

该函数为径向基传递函数,调用格式为

A=radbas(N)

info=radbas(code)

其中N为输入(列)向量的S*Q维矩阵,A为函数返回矩阵,与N一一对应,即N的每个元素通过径向基函数得到A;info=radbas(code)表示根据code值的不同返回有关函数的不同信息。包括

derive——返回导函数的名称

name——返回函数全称

output——返回输入范围

active——返回可用输入范围

使用exact径向基网络来实现非线性的函数回归:

%%清空环境变量
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
函数图像:

approximate RBF网络对同意函数进行拟合

%%清空环境变量
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);
%%建立测试样本
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);
%%使用图像,画出三维图
%真正的函数图像
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])
结果图像:


结论,可以看出神经网络的训练结果能够较好逼近该非线性函数F,由误差图可知,实景网络的预测效果在数据边缘处的误差较大,在其它书指出的拟合效果很好,网络的输出值与函数值之间的插值在隐藏层神经元的个数为100时已经接近0,说明网络输出能非常好地逼近函数。

  • 21
    点赞
  • 107
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: RBF (Radial Basis Function) 是 MATLAB 中一个重要的基函数,主要用于解决非线性问题和模式识别。在 MATLAB 中,使用 RBF函数可以通过一组基函数和对应的权重来拟合非线性数据。RBF函数的一般公式为: phi(r) = exp(-(epsilon*r)^2) 其中,phi(r)是 RBF函数的值,epsilon 是模型的一个参数,r 是输入数据与基函数中心之间的欧氏距离。 RBF函数有许多优点,包括可以逼近任意复杂的非线性数据,并且可以通过添加或移动基函数中心来调整模型的拟合性能。此外,RBF函数还具有很好的收敛性和插值性质,可以有效地应用于回归和分类问题。 在 MATLAB 中,使用 RBF函数可以先选择一组合适的基函数中心,然后根据数据集来计算每个基函数中心与输入数据之间的欧氏距离。然后,根据欧氏距离和 RBF函数的公式,计算每个基函数在给定输入数据下的值。最后,根据权重和基函数值的线性组合,得到最终的 RBF 模型输出。 需要注意的是,在使用 RBF函数时,选择适当的基函数中心和参数 epsilon 非常重要。基函数中心的选择可以通过聚类算法或者随机选择来实现,而参数 epsilon 的选择则需要根据具体问题和数据集来进行调整和优化。 总之,RBF函数MATLAB 中是一个非常有用和灵活的工具,可以帮助解决各种非线性问题和模式识别任务。 ### 回答2: matlab中的rbf函数指的是径向基函数(Radial Basis Function)。它是一种广泛应用于插值、拟合和分类等问题的数学函数。 在matlab中,可以通过使用rbf函数来生成rbf函数。该函数具有以下语法格式: phi = rbf(x, c, r) 其中,x是输入的数据点,包含了若干个样本。c是中心点,表示rbf函数在空间中的中心位置。r是尺度参数,用于确定rbf函数的宽度。 通过调用rbf函数,可以计算出每个样本点与中心点之间的距离,并应用于rbf函数的计算公式。计算得到的结果即为应用rbf函数后的值。 rbf函数具有以下特点: 1. 核心思想:rbf函数以中心点为基准,随着距离的增加而逐渐减小,直到趋于零。因此,样本点距离中心点较近时,函数值较大;样本点距离中心点较远时,函数值较小。 2. 实际应用:rbf函数经常用于插值和拟合问题。通过选取一组合适的中心点,可以利用rbf函数对缺失的数据进行估计或者拟合出平滑的曲线。 3. 高斯函数:常见的rbf函数是高斯函数,其数学表达式为phi(x) = exp(-r * ||x - c||^2),其中||x - c||表示样本点x与中心点c之间的欧氏距离,r为尺度参数。 rbf函数matlab中用于插值和拟合等问题的重要工具之一。通过合理选择中心点和尺度参数,rbf函数可以灵活地适应不同类型的数据,从而提高数据的分析和处理能力。 ### 回答3: RBF(Radial Basis Function,径向基函数)是MATLAB中常用的一种基函数RBF函数是一种以径向距离为自变量的函数,其在中心点上具有最大值,并随着距离的增加而逐渐减小。MATLAB中,RBF函数通常用来进行插值和拟合等数据处理操作。 在MATLAB中,我们可以通过`rbfcreate`函数创建RBF函数的模型,并使用`rbfinterp`函数进行插值操作。`rbfcreate`函数中可以指定径向基函数的类型,常见的有高斯型、多正切型等。我们还可以通过指定各个基函数的中心点和标准差等参数来调整模型的拟合效果。 例如,我们可以通过以下代码创建一个以高斯型RBF函数为例的模型: ``` centers = [1 2 3]; % 指定三个基函数的中心点 width = 0.5; % 指定基函数的标准差 rbfModel = rbfcreate(centers, width); % 创建RBF函数模型 ``` 然后,我们可以使用`rbfinterp`函数进行插值操作,根据给定的输入点的坐标计算对应的函数值: ``` x = [1.5 2.5]; % 指定两个输入点的坐标 y = rbfinterp(rbfModel, x); % 根据模型进行插值计算 ``` 以上代码将会计算给定输入点的插值结果,并返回对应的函数值。 综上所述,MATLAB中的RBF函数提供了一种灵活和有效的数据处理方法,可以用于数据的插值和拟合等操作,并且具有较好的拟合效果。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值