首页 > 其他分享 >m基于RBF神经网络的数据预测matlab仿真,测试数据分别采用趋势型数据,周期型数据以及混乱型数据

m基于RBF神经网络的数据预测matlab仿真,测试数据分别采用趋势型数据,周期型数据以及混乱型数据

时间:2023-02-27 13:22:07浏览次数:39  
标签:cnt 函数 %% Train matlab func RBF 数据 径向

1.算法描述

       1985年,Powell提出了多变量插值的径向基函数(RBF)方法。径向基函数是一个取值仅仅依赖于离原点距离的实值函数,也可以是到任意一点c的距离,c点称为中心点。任意满足上述特性的函数,都可以叫做径向基函数。一般使用欧氏距离计算距离中心点的距离(欧式径向基函数)。最常用的径向基函数是高斯核函数。RBF神经网络只有三层,即输入层、隐藏层、输出层。

 

 

 

 

      用RBF作为隐藏层单元的激活函数,将输入数据映射到高维隐藏空间,不需要通过权值连接,当RBF的中心点确定后,映射关系也就确定了。比如图2中的隐藏层c1-ch,需要确定h个中心点。

 

       隐藏层到输出层的映射是线性的,即网络的输出是隐藏单元输出的线性加权求和,这里的权重(w)即为网络的可调参数。

 

注意:隐含层的作用是把向量从低维度的p映射到高维度的h,这样低维度线性不可分的情况到高维度就可以变得线性可分了,主要就是核函数的思想。这样,网络由输入到输出的映射是非线性的;而网络输出对可调参数而言却又是线性的,网络的权就可由线性方程组直接解出,从而大大加快学习速度并避免局部极小问题。

 

       径向基神经网络的激活函数可表示为:

 

 

 

 

       其中xp为第p个输入样本,ci为第i个中心点,h为隐含层的结点数,n是输出的样本数或分类数。径向基神经网络的结构可得到网络的输出为:

 

 

 

 

      RBF神经网络的隐节点采用输入模式与中心向量的距离(如欧式距离)作为函数的自变量,并使用径向基函数(如Gaussian函数)作为激活函数。神经元的输入离径向基函数中心越远,神经元的激活程度就越低(高斯函数)。

 

2.仿真效果预览

matlab2022a仿真结果如下:

 

 

 

 

 

 

 

 

 

 

 

 

3.MATLAB核心程序

 

load data3.mat
%%
%选择100个数据作为输入
Data = data3(1:100);
%%
%选择20个训练数据
t11         = 1:10;
Train_data1 = Data(1:10);
t12         = 1:10;
spread = 1;
goal   = 0.01;
df     = 1;
mn     = length(t11);
net    = newrb(t11,Train_data1,goal,spread,mn,df); 
 
yc1    = sim(net,t12);
%%
%选择70个训练数据
t21         = 1:60;
Train_data2 = Data(1:60);
t22         = 1:60;
 
spread = 1;
goal   = 0.01;
df     = 1;
mn     = length(t21);
net    = newrb(t22,Train_data2,goal,spread,mn,df); 
yc2    = sim(net,t22);
 
figure;
plot(t21,Train_data2,'b-o');
hold on;
plot(t22,yc2,'r-*');
hold off;
grid on;
 
 
 
%%
%%对比计算结果
mser11 = func_mse(Train_data1);
mser12 = func_mse(yc1);
sder1  = func_sd(yc1);
sdrer1 = func_sdr(yc1,Train_data1);
coeff1 = func_pcc(yc1,Train_data1);
 
fprintf('Inputs    Train data points    MSE training    MSE testing     PCC         SDR         SD\n');
%%
%下面的程序是画图
cnt = 0;
for i = 10:2:60
    i
    cnt         = cnt + 1;
    t01         = 1:i;
    Train_data0 = Data(1:i);
    t02         = 1:i;
    spread      = 1;
    goal        = 0.01;
    df          = 1;
    mn          = length(t01);
    net         = newrb(t02,Train_data0,goal,spread,mn,df); 
    yc0         = sim(net,t02);
    %%
    %%对比计算结果
    mser01(cnt) = func_mse(Train_data0);
    mser02(cnt) = func_mse(yc0);
    sder0(cnt)  = func_sd(yc0);
    sdrer0(cnt) = func_sdr(yc0,Train_data0);   
end

 

  

 

标签:cnt,函数,%%,Train,matlab,func,RBF,数据,径向
From: https://www.cnblogs.com/51matlab/p/17159340.html

相关文章

  • 数据结构刷题2023.02.27小记
    单循环链表A从表中任一结点出发都能扫描到整个链表B不再需要头指针了C在进行插入、删除操作时,能更好地保证链表不断开D已知某个结点的位置后,能够容易找到它的直接......
  • 写给数据库运维的兄弟
    写在前面的故事首先,给看官们讲个故事:最近遇到过一个客户,系统上线三年变的越来越慢,直到前几个月全面爆发,系统前端使用人员不断抱怨,甚至已经达到了不能使用的程度。这个......
  • C#使用拉依达准则(3σ准则)剔除异常数据(.Net剔除一组数据中的奇异值)
    1、问题的提出:电池生产中,遇到一批电池的测量结果数据:电压值电池个数电压值电池个数电压值电池个数电压值电池个数0.0561 4.091 4.14617 4.174134340.3211 4.0941 4.147......
  • 将后端的application/json的格式数据类型转换成前端需要的类型格式
    前提:后端返回的数据内容但是红框的数据对于前端来说是不正确的数据所以我感觉前端处理这个数据本身这个操作都很傻X但是我尝试进行转换代码如下:得到的数据:点击查......
  • 链接数据库
    在Java下创建一个包右键java→new→packge  名字com.baidu.pojo  右键新建的com.baidu.pojo→new→class class名字User  对应列写privateintuid;写......
  • 场景扩展,体验升级 | DBMotion新增无公网数据库迁移、支持监控报警等多项功能
    丝滑的零停机数据库在线迁移工具——DBMotion,又双叒叕发新版:新增的网关、数据源功能,让你无公网IP的数据库也可以迁移;新增的监控功能,让你对迁移性能一目了然;新增的报警功能,让......
  • 通过EXCEL/WPS文件,拼接SQL,刷数据库数据
    WPS如何把日期变成文本格式?【快捷选择同一列多条记录】同一列,鼠标左键标记A,SHIFT+鼠标左键标记B,等于选择A-B的之间的数据【向下填充】在第一行输入数据,选择同一列A-B......
  • 数据科学
    数据和数据集01.数据属性四种类型:标称,nominal;序数,ordinal;区间,interval;比率,ratio。用值的个数描述属性:离散,discrete;连续,continuous。02.数据集--维度(有的属......
  • 数据分析——用户流失分析
     本文是对“用户流失原因”问题进行的思考整理,仅作记录,欢迎讨论。思维框架图版:文版:内部原因:1.数据验证先确认指标逻辑计算和数据提取是否存在问题;数据提取无误......
  • Python批量绘制遥感影像数据的直方图
      本文介绍基于Python中gdal模块,实现对大量栅格图像批量绘制直方图的方法。  首先,明确一下本文需要实现的需求:现需对多幅栅格数据文件进行依据其像元数值的直方图绘制......