用RBF网络实现单输入单输出非线性函数的拟合

2023-11-03

用RBF网络实现单输入单输出非线性函数的拟合。100个输入输出训练样本给定,101个输入输出测试样本给定。要求:
使用1-10-1的RBF网络结构,输出节点有阈值;
使用KNN K-means聚类算法求出10个聚类中心和方差,聚类中心的初始值为训练样本的前10个数值,并由用最小二乘算法求出隐层到输出层权值。
给出10个聚类后的类中心的具体数值,以及11个(包含阈值)的隐层到输出层的权值。

画出训练样本曲线,并画出测试样本的测试结果曲线。


按照网上搜索的改的和要求一样。

SamNum = 100; % 总样本数
TestSamNum = 101; % 测试样本数
InDim = 1; % 样本输入维数
ClusterNum = 10; % 隐节点数,即聚类样本数
Overlap = 1.0; % 隐节点重叠系数

% 获得样本输入输出

SamIn =[
   -3.6606   -3.4284    0.1732   -3.2262    2.5452    2.5404    1.7795   -2.8011    1.2768    0.1488 ...
    3.7838    1.1919    2.4026   -0.3696   -0.5409    2.6025   -3.3322   -2.9346   -2.6129   -0.8725 ...
    2.6510    2.4269   -3.5162   -0.8059    0.2150   -0.6656    1.2549    1.0238   -1.6641   -0.5468 ...
   -3.8761    3.8725   -2.6627   -3.1503   -1.0207   -2.4151   -0.0825   -1.2841    3.6130    3.3627 ...
   -3.5786    1.9029   -1.8470   -0.6173    0.3830    3.5419   -0.6580    3.8644   -1.5884    1.6088 ...
    1.3307    0.3130    1.5848    1.3322   -2.5749   -2.9759    3.9926   -2.6310   -3.7392    0.4896 ...
    3.0549    1.3534   -2.4765   -1.0487   -0.3142    3.8531   -2.7488    2.8442    1.1581   -0.9898 ...
   -2.4726   -0.5740   -0.1438   -3.0351    0.7161   -2.1905   -0.9230    0.6639   -1.9856   -1.6765 ...
    0.9367   -1.8778    2.5950    3.8613    1.8420   -1.2490    0.6726   -3.1378    3.2505    3.0372 ...
    2.5421   -1.9142    0.7549   -3.8199   -0.5979   -1.4982   -2.7081   -2.5699   -0.6169   -3.2462];
SamOut =[
    0.0216    0.1487    0.9793    0.0484    0.5870    0.5269    1.2677    0.4757    1.4787    0.8801 ...
    0.0059    1.4177    0.5691    1.8560    1.9327    0.3960    0.0421    0.1965    0.6061    2.5249 ...
    0.5593    0.5742   -0.0399    2.6287    1.0666    2.2262    1.2983    1.3054    2.2439    2.0592 ...
   -0.0051    0.0609    0.6059    0.0597    2.5869    0.8239    1.1508    2.6602    0.0391   -0.2248 ...
    0.0093    1.2649    1.8254    2.2567    0.9656    0.0439    2.2542   -0.1395    2.3701    1.5378 ...
    1.4669    0.9289    1.3173    1.4541    0.6960    0.3275   -0.0263    0.5798    0.2355    0.7400 ...
    0.3948    1.4908    0.9066    2.5300    1.5237   -0.0102    0.5168    0.1092    1.4672    2.5405 ...
    0.8189    2.1484    1.3230    0.3551    1.2152    1.2120    2.6315    0.9800    1.5334    2.3314 ...
    1.2897    1.8681    0.5416    0.0766    1.2337    2.8323    1.1740    0.2147    0.0364    0.1141 ...
    0.6139    1.6425    1.1432   -0.1695    2.2298    2.5882    0.5167    0.6722    1.9140    0.2016];


TestSamIn =[
   -4.0000   -3.9200   -3.8400   -3.7600   -3.6800   -3.6000   -3.5200   -3.4400   -3.3600   -3.2800 ...
   -3.2000   -3.1200   -3.0400   -2.9600   -2.8800   -2.8000   -2.7200   -2.6400   -2.5600   -2.4800 ...
   -2.4000   -2.3200   -2.2400   -2.1600   -2.0800   -2.0000   -1.9200   -1.8400   -1.7600   -1.6800 ...
   -1.6000   -1.5200   -1.4400   -1.3600   -1.2800   -1.2000   -1.1200   -1.0400   -0.9600   -0.8800 ...
   -0.8000   -0.7200   -0.6400   -0.5600   -0.4800   -0.4000   -0.3200   -0.2400   -0.1600   -0.0800 ...
         0    0.0800    0.1600    0.2400    0.3200    0.4000    0.4800    0.5600    0.6400    0.7200 ...
    0.8000    0.8800    0.9600    1.0400    1.1200    1.2000    1.2800    1.3600    1.4400    1.5200 ...
    1.6000    1.6800    1.7600    1.8400    1.9200    2.0000    2.0800    2.1600    2.2400    2.3200 ...
    2.4000    2.4800    2.5600    2.6400    2.7200    2.8000    2.8800    2.9600    3.0400    3.1200 ...
    3.2000    3.2800    3.3600    3.4400    3.5200    3.6000    3.6800    3.7600    3.8400    3.9200 ...
    4.0000];
 TestSamOut =[
    0.0137    0.0181    0.0237    0.0309    0.0401    0.0515    0.0657    0.0833    0.1048    0.1309 ...
    0.1622    0.1997    0.2439    0.2958    0.3559    0.4252    0.5040    0.5929    0.6921    0.8016 ...
    0.9213    1.0504    1.1882    1.3331    1.4836    1.6376    1.7924    1.9453    2.0933    2.2330 ...
    2.3611    2.4742    2.5693    2.6435    2.6943    2.7200    2.7194    2.6922    2.6389    2.5608 ...
    2.4602    2.3401    2.2042    2.0568    1.9026    1.7465    1.5936    1.4484    1.3154    1.1982 ...
    1.1000    1.0228    0.9679    0.9354    0.9247    0.9342    0.9615    1.0036    1.0569    1.1177 ...
    1.1822    1.2463    1.3067    1.3599    1.4034    1.4349    1.4530    1.4568    1.4460    1.4209 ...
    1.3824    1.3317    1.2705    1.2005    1.1237    1.0421    0.9576    0.8721    0.7872    0.7044 ...
    0.6249    0.5497    0.4795    0.4148    0.3559    0.3029    0.2558    0.2143    0.1781    0.1468 ...
    0.1202    0.0976    0.0786    0.0629    0.0499    0.0393    0.0308    0.0239    0.0184    0.0141 ...
    0.0107];


figure
hold on
grid

plot(SamIn,SamOut,'k+')
plot(TestSamIn,TestSamOut,'r--')
xlabel('Input x');
ylabel('Output y');
legend('训练','测试')

%初始化中心
Centers = SamIn(:,1:ClusterNum);
NumberInClusters = zeros(ClusterNum,1); 
IndexInClusters = zeros(ClusterNum,SamNum);

%迭代求解均值中心
while 1, 
    NumberInClusters = zeros(ClusterNum,1); % 各类中的样本数,初始化为零
    IndexInClusters = zeros(ClusterNum,SamNum); % 各类所含样本的索引号

    % 按最小距离原则对所有样本进行分类  计算样本点到中心的距离
    for i = 1:SamNum
        AllDistance = dist(Centers',SamIn(:,i));
        [MinDist,Pos] = min(AllDistance);
        NumberInClusters(Pos) = NumberInClusters(Pos) + 1;
        IndexInClusters(Pos,NumberInClusters(Pos)) = i;
    end

    % 保存旧的聚类中心
    OldCenters = Centers;
    %根据中心聚类,并得到新的类内均值
    for i = 1:ClusterNum
        Index = IndexInClusters(i,1:NumberInClusters(i));
        Centers(:,i) = mean(SamIn(:,Index)')';
    end

    % 判断新旧聚类中心是否一致,是则结束聚类   判断中心有没有变化
    EqualNum = sum(sum(Centers==OldCenters));
    if EqualNum == InDim*ClusterNum,
        break,
    end

end
Centers  %输出聚类中心

% 计算各隐节点的扩展常数(宽度)
AllDistances = dist(Centers',Centers); % 计算隐节点数据中心间的距离(矩阵)
Maximum = max(max(AllDistances)); % 找出其中最大的一个距离
for i = 1:ClusterNum % 将对角线上的0 替换为较大的值
    AllDistances(i,i) = Maximum+1;
end
Spreads = Overlap*min(AllDistances)'; % 以隐节点间的最小距离作为扩展常数

% 计算各隐节点的输出权值 用最小二乘法得到权值
Distance = dist(Centers',SamIn); % 计算各样本输入离各数据中心的距离
SpreadsMat = repmat(Spreads,1,SamNum);
HiddenUnitOut = radbas(Distance./SpreadsMat); % 计算隐节点输出阵
HiddenUnitOutEx = [HiddenUnitOut' ones(SamNum,1)]'; % 考虑偏移
W2Ex = SamOut*pinv(HiddenUnitOutEx); % 求广义输出权值
W2 = W2Ex(:,1:ClusterNum) % 输出权值
B2 = W2Ex(:,ClusterNum+1) 


% 测试  预测数据输出
TestDistance = dist(Centers',TestSamIn);
TestSpreadsMat = repmat(Spreads,1,TestSamNum);
TestHiddenUnitOut = radbas(TestDistance./TestSpreadsMat);
TestNNOut = W2*TestHiddenUnitOut+B2;


figure

plot(TestNNOut,'-k.');
hold on
plot(TestSamOut,'-g.');
grid on
legend('预测输出','实际输出')


%方差
 a=max(Centers);
 b=min(Centers);
 c=abs(a-b);
 d=c./sqrt(2*ClusterNum)
 
 d1=var(Centers)
        

如有侵权,立删

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用RBF网络实现单输入单输出非线性函数的拟合 的相关文章

  • 为什么 MATLAB 在打印大量 (.png) 图形时速度会变慢?

    我正在将大量数字打印为 png 文件 每个图都是数据矩阵中的一列图 我获取 png 文件并将它们串在一起形成动画 我的问题是 前几百张图像打印得很快 但创建每个新图形的时间却迅速增加 从前几百个 png 文件的约 0 2 秒到第 800 个
  • 如何每次使用按钮将数据添加到 MATLAB 中的现有 XLSX 文件?

    我有一个函数可以生成一些变量 例如分数 对 错 未回答 使用按钮调用此功能 问题是如何每次将函数生成的这些值添加 附加到 XLSX 文件中 或者 如何创建 MAT 文件以便可以添加它 可能的解决方案是什么 附加到 xls 文件所涉及的挑战是
  • MATLAB - GUI 和 OPC 服务器

    我想在 MATLAB 中设计一个图形用户界面 可以使用 MATLAB 的过程控制对象链接和嵌入 OPC 工具箱连续读取数据 我怎样才能实现这个 我已经设计了图形用户界面 但我无法将数据读入图形用户界面 就这样做 type opctoolMA
  • 在Matlab中选择图像上的像素时,索引指的是什么?

    当在Matlab中查看图像的单个像素时 该索引指的是什么 X Y 指的是像素的坐标 RGB 指的是颜色 但是关于索引是什么有什么想法吗 为了澄清一下 当我在 Matlab 中查看图形并使用数据光标选择一个点时 显示的三行是 X Y 指数 R
  • 如何获取MATLAB句柄对象的ID?

    当我尝试使用时出现问题MATLAB 句柄对象 http www mathworks com help techdoc ref handle html作为关键值MATLAB 容器 Map http www mathworks com help
  • 归一化互相关的基础知识

    我正在尝试使用范数校正2 归一化互相关 http en wikipedia org wiki Cross correlation Normalized cross correlation 来自 MATLAB 用于计算发育中胚胎中移动形状的速
  • 垂直子图的单一颜色条

    我想让下面的 MATLAB 图有一个沿着两个子图延伸的颜色条 像这样的事情 使用图形编辑器手动完成 Note 这与提出的问题不同here https stackoverflow com questions 39950229 matlab t
  • 检查图像中是否有太薄的区域

    我正在尝试验证雕刻机的黑白图像 更多的是剪贴画图像 不是照片 我需要考虑的主要事情之一是区域的大小 或线条的宽度 因为机器无法处理太细的线条 所以我需要找到比给定阈值更细的区域 以此图为例 竖琴的琴弦可能太细而无法雕刻 我正在阅读有关 Ma
  • 哪里可以找到可靠的 K-medoid(不是 k-means)开源软件/工具? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在学习 K medoids 算法 所以如果我提出不恰当的问题 我很抱歉 据我所知 K medoid
  • Python 或 C 语言中的 Matlab / Octave bwdist()

    有谁知道 Matlab Octave bwdist 函数的 Python 替代品 此函数返回给定矩阵的每个单元格到最近的非零单元格的欧几里得距离 我看到了一个 Octave C 实现 一个纯 Matlab 实现 我想知道是否有人必须用 AN
  • 在 GPU 支持下对高维数据进行更快的 Kmeans 聚类

    我们一直在使用 Kmeans 来对日志进行聚类 典型的数据集有 10 mill 具有 100k 特征的样本 为了找到最佳 k 我们并行运行多个 Kmeans 并选择轮廓得分最佳的一个 在 90 的情况下 我们最终得到的 k 介于 2 到 1
  • 命令 A(~A) 在 matlab 中的真正作用是什么

    我一直在寻找找到矩阵非零最小值的最有效方法 并在论坛上找到了这个 设数据为矩阵A A A nan minNonZero min A 这是非常短且高效的 至少在代码行数方面 但我不明白当我们这样做时会发生什么 我找不到任何关于此的文档 因为它
  • MATLAB 编译器与 MATLAB 编码器

    两者有什么区别 据我了解 MATLAB Compiler将MATLAB代码包装成 exe文件 这样就可以在不安装MATLAB的情况下使用它 并且只需要MCR 除此之外 MATLAB Builder NE 还可以用于生成与 Net 框架一起使
  • Matlab的导入函数的范围是什么?

    我正在尝试将一些用 Matlab 编写的代码转换为独立的 编译的 Matlab 应用程序 然而 在出现一些奇怪的错误之后 我意识到代码大量使用了从路径中添加和删除的操作 以避免多次使用多个具有相同名称 但结果 计算不同 的函数这一事实 环顾
  • 禁止 MATLAB 自动获取焦点[重复]

    这个问题在这里已经有答案了 我有以下问题 在我的 MATLAB 代码中 我使用如下语句 figure 1 更改某些数据的目标数字 问题是 在此 MATLAB 之后 系统将焦点集中在具有该图形的窗口上 当我在后台运行一个大脚本并尝试在计算机上
  • 将 kinect RGB 和深度值转换为 XYZ 坐标

    我正在寻找一种简单的方法将 kinect RGB 和深度值转换为 XYZ 坐标 使用 MATLAB 我的目标是一个输入为以下内容的函数 每个点的 RGB 和深度值Kinect相机 并输出 每个点的 x y 和 z 值 RGB 深度 RGB
  • matlab 中的动画绘图

    我正在尝试创建一个三角形的动画图 最终结果应该是十个三角形 后面跟着两个更大的三角形 后面跟着一条直线 使用matlab文档 https de mathworks com help matlab ref drawnow html 我最终得到
  • 轴标注问题

    通过运行我编写的以下 matlab 函数 可以互换图中的 x 轴和 y 轴 谁能告诉我问题出在哪里或者帮我解决它吗 预先感谢您的任何帮助 function axislabeling n x 1 1 n y 1 1 n z zeros n n
  • 如何从 matlab 调用 Qtproject?

    我在 matlab 中有一个函数可以写入一个 file txt 我在 qt 项目中使用它 So 当我使用 unix 获取要运行的 qt 编译可执行文件时 我有一个 Matlab 文件 但出现错误 代码 unix home matt Desk
  • 在矩阵中找到叉的最快方法

    定义 A i j 1 是十字的中点 如果元素A i 1 j 1A i 1 j 1A i j 1 1A i j 1 1 这些元素和中点一起形成矩阵 A 中的十字 其中 A 至少是一个 3 3 矩阵 并且i j 0 假设上图是 8 8 矩阵 A

随机推荐

  • 使用 ipmi实现Linux系统下对服务器的管理

    IPMI Intelligent Platform Management Interface 即智能平台管理接口是使硬件管理具备 智能化 的新一代通用接口标准 用户可以利用 IPMI 监视服务器的物理特征 如温度 电压 电扇工作状态 电源供
  • 【Linux网络】网络编程套接字(上)

    Linux 博客主页 一起去看日落吗 分享博主的在Linux中学习到的知识和遇到的问题 博主的能力有限 出现错误希望大家不吝赐教 分享给大家一句我很喜欢的话 看似不起波澜的日复一日 一定会在某一天让你看见坚持的意义 祝我们都能在鸡零狗碎里找
  • ospf协议_三级网络技术考前选择题3—OSPF协议

    一 视频讲解 二 知识点背诵 高频21次 1 OSPF是内部网关协议的一种 采用最短路径算法 使用分布式链路状态协议 2 对于规模很大的网络 OSPF通过划分区域来提高路由更新收敛速度 每个区域有一个32位的区域标识符 区域内路由器不超过2
  • Springboot+Shiro+Jwt实现简单的权限控制

    前置背景 为什么写下这篇文章 因为需要实现一个设备管理系统的权限管理模块 在查阅很多博客以及其他网上资料之后 发现重复 无用的博客很多 因此写一篇文章来记录 以便后面复习 涉及的知识点主要有下列知识点 JWT shiro 书写顺序 首先使用
  • 本地写json数据并在页面中调用

    这里我自己写的是两个方法 一种是用js文件中写的 一种是在json文件中写的 js文件 var workData firstWork companyName time department position project name tim
  • 好文

    https www jianshu com p c2ec5f06cf1a
  • 带隙基准电流源设计与改进/自己备忘

    采用1830工艺设计 预设值电流I 10uA 由公式 过驱动电压0 2V 得到PMOS宽长比12 5 1 由公式 过驱动电压0 2V 得到NM8宽长比2 8 1 设置K 4 NM7宽长比4 2 8 1 由公式 带入计算得到R大小为9 96K
  • [1197]脱壳工具dumpDex的使用详解

    文章目录 一 dumpDex概述 二 使用方法 三 脱壳原理 一 dumpDex概述 dumpDex 一个开源的 Android 脱壳插件工具 需要xposed支持 可以用来脱掉当前市场上大部分的壳 360加固 腾讯乐固 梆梆加固 百度加固
  • Googletest 实现简要分析

    借助于 Googletest 测试框架 我们只需编写测试用例代码 并定义简单的 main 函数 编译之后并运行即可以把我们的测试用例跑起来 更详细的内容可参考 Googletest 入门 但 main 函数调用 RUN ALL TESTS
  • MySQL学习1:前期准备

    一 数据库基础知识 1 为什么使用数据库 持久化 数据库是一种持久化介质 即可以将内存数据永久的保存在磁盘上 数据库特性 支持多种数据的复杂性 寻找数据比较容易 2 数据库的一些基本概念 DB 数据库 本质是一个文件系统 能够保存有组织的数
  • 百度 Hydra 工具在移动端 UI 兼容性测试上的高效应用

    导读 尽管自动化测试技术日新月异 但是自动化case构建成本 执行稳定性等问题的存在 使手工测试依然移动端质量保证的重要手段 传统手工测试必须通过人工操作的方式执行测试用例 效率提升依赖测试人员的操作熟练度 本文从介绍百度内UI兼容性测试现
  • Spire.xls+excel文件实现单据打印

    报表和单据打印 通常都是使用fastreport之类的 因为有了现成的xls模板样式 如果转成fastreport那还需要花时间 是用spire xls这个玩意简单 超好用 一 引用 using Spire Xls 二 基本的操作 创建工作
  • 在MinGW启动时激活环境变量

    熟悉Linux的都知道 在进入SHELL时 一共有四种方式添加环境变量与添加自定义命令 如下 文件位置 用途 优先级 补充说明 etc profile 通用环境信息 首用户登录执行 1 会从 etc profile d目录件中搜集shell
  • 阿里与华为,引领科技现代化进程

    阿里NASA计划和华为2012实验室 3月9日 马云在阿里巴巴技术峰会上 首次重磅推出了阿里 NASA 计划 对航天稍有了解的读者都知道 NASA是美国太空总署的英文简称 代表着太空 尖端科技 和人类精神上的英雄主义理想 NASA虽然探索者
  • Dp,DVI,Hdmi接口信号

    DP HDMI与DVI接口信号记录 1 DP接口 DP信号包含主链路 main link 自动辅助通道 AUX CH 和热插拔信号 Hot plug detect 1 主链路采用的是双端交流差分信号 lane 2 带宽提供5 4G 2 7G
  • cmd错误: 找不到或无法加载主类 的解决办法

    写在前面 大家好 我是草莓橙须圆 毕业之前在CSDN和微信公众号活跃 欢迎关注我的公众号 草莓橙须圆 微信号 cmcxy8w 微信公众号主要就是更新一些日常和有用的小工具 CSDN主要就是学习Java过程中总结的笔记 今天遇到的问题 在cm
  • 1.0 java_Mybatis_oracle基于WEB的仓库管理系统的设计与实现(源码+数据库sql+论文+视频齐全)----库管理系统---源码在底部

    基于Web的仓库管理系统的设计与实现 摘 要 仓库物品的管理是与我们的日常生活息息相关的一个重大问题 随着我国经济飞速的发展 改革开放的不断深入 企业要想在激烈的市场竞争中立于不败之地 要想继续的发展与生存 没有现代化的管理方式与方法是万万
  • 微信登录界面安卓代码_安卓模拟器微信登录闪退,转圈,停止运行解决方法

    雷电模拟器微信登录不上 微信闪退 模拟器微信停止运行等等问题一直在论坛出现 雷电模拟器最新版本已经解决了大部分的微信登录问题了 还是会有小部分伙伴出现了难以解决的问题 微信停止运行一般是建议安装最新雷电模拟器最新版本 如果是微信登录不上的话
  • MySQL数据库综合案例1----创建“教务管理系统“数据库

    本节以教育管理系统为例来介绍数据库的创键和数据表的设计 案例需求 1 教务管理系统用来帮助高校学生选修课程 2 学生可以通过系统查看所有选修课的相关信息 包括课程名 学时 学分 也可以查看相关授课老师的信息 3 老师的信息包括教师姓名 性别
  • 用RBF网络实现单输入单输出非线性函数的拟合

    用RBF网络实现单输入单输出非线性函数的拟合 100个输入输出训练样本给定 101个输入输出测试样本给定 要求 使用1 10 1的RBF网络结构 输出节点有阈值 使用KNN K means聚类算法求出10个聚类中心和方差 聚类中心的初始值为