利用MATLAB中的newrb函数进行函数逼近
RBF函数在神经网络控制中较为常见,MATLAB中早已集成了一个newrb的函数,在一些场景下使用起来还比较方便。尤其是涉及到进行函数逼近的时候。
参考链接
- http://blog.sina.com.cn/s/blog_9b8d0abd0101o7rn.html
- https://blog.csdn.net/m0_37602827/article/details/87691307
基本用法
NEWRB Design a radial basis network.
Synopsis
[net,tr] = newrb(P,T,GOAL,SPREAD,MN,DF)
Description
Radial basis networks can be used to approximate functions. NEWRB adds neurons to the hidden layer of a radial basis network until it meets the specified mean squared error goal.NEWRB(P,T,GOAL,SPREAD,MN,DF) takes these arguments,
P - RxQ matrix of Q input vectors.
T - SxQ matrix of Q target class vectors.
GOAL - Mean squared error goal, default = 0.0.
SPREAD - Spread of radial basis functions, default = 1.0.
MN - Maximum number of neurons, default is Q.
DF - Number of neurons to add between displays, default = 25.
and returns a new radial basis network.
newrb设计了径向基网络,调用格式:
net = newrb
[net,tr] = newrb(P,T,goal,spread,MN,DF)
P-Q组输入向量组成的R×Q维矩阵;
T-Q组目标分类向量组成的S×Q维矩阵;
goal-均方误差,默认值为0;
spread-径向基函数的扩展速度,默认值为1;
MN-神经元的最大数目,默认是Q
DF-两次显示之间所添加的神经元数目,默认值为25;
net-返回值,一个径向基网络;
tr-返回值,训练纪录。
该函数设计的径向基网络net可用于函数逼近。径向基函数的扩展速度spread越大,函数的拟合就越平滑。但是,过大的spread意味着需要非常多的神经元以适应函数的快速变化。如果spread设定过小,则意味着需要许多神经元来适应函数的缓慢变化,这样一来,设计的网络性能就不会很好。
示例
%%%%%%%%%%一元函数逼近%%%%%%%%%%
clear,clc;
x=linspace(-20,20,100); %神经网络输入值
t=10*x-30*sin(x)-80*tansig(x); %神经网络目标值
plot(x,t,'+'); %待逼近的函数图像
hold on
net=newrb(x,t,1,2); %平方和误差小于1
y=net(x);%神经网络输出值
plot(x,y,'g'); %仿真的函数图像
title('RBF神经网络函数逼近');
xlabel('输入值');
ylabel('目标值/输出值');
mse(y,t) %平方和误差
%%%%%%%%%%二元函数逼近%%%%%%%%%%
clear,clc
t=0:0.1:10*pi; %辅助参数
x=(t+0.5*pi).*sin(t+0.5*pi); %神经网络输入值(指标1)
y=(t+0.5*pi).*cos(t+0.5*pi); %神经网络输入值(指标2)
z=1.5*t; %神经网络目标值
net=newrb([x;y],z,0.001,2); %平方和误差小于0.001
zf=net([x;y]);%神经网络输出值
plot3(x,y,zf,'r'); %仿真的函数图像
hold on
plot3(x,y,z,'+'); %待逼近的函数图像
title('RBF神经网络函数逼近');
xlabel('输入值(指标1)');
ylabel('输入值(指标2)');
zlabel('目标值/输出值');
grid on
mse(zf,z) %平方和误差
注意事项
首先应该特别注意数据的维度,对于上面的P和T,P是R×Q维矩阵,其中R是输入层神经元数目(即输入个数),Q是有多少组数据;T是S×Q维矩阵,其中S是输出层神经元数目(即输出个数),Q与输入应对应。
网络结构
得到的net网络,输入net
可以直接查看其参数,
查看RBF网络的参数和查看BP网络的参数都是一样的方法,MATLAB的命令为net.IW{1},net.LW{2},net.b,只是代表的意义不一样,在BP里面net.IW{1}是输入层到隐藏层的权重,net.LW{2}是隐藏层到输出层的权重,net.b是阈值;在RBF里面,net.IW{1}就是各神经元的基向量,net.LW{2}是隐藏层到输出层的权重,net.b{1}是基宽,net.b{2}是输出层的阈值,比如下面这个例子:
% 下面例子中有几处转置,是为了符合平时表达习惯设置的,具体使用时需要注意不要因此出错,
% 尤其是当数据不是一维时可能会和下面不太一样
clear all
P = [1 2 3];
T = [2.0 4.1 5.9];
net = newrbe(P,T);
c = net.iw{1}' % 注意转置
W = net.lw{2}
b = net.b{1}
bi= net.b{2}x = [0];
for j=1:1:3h(j)=exp(-norm(x'-c(:,j))^2*(b(j)^2))
end% 下面三个式子得出的结果是一样的
W*h'+bi % 注意转置
net(0)
0.56*exp(-(0.83225*sqrt((2-0)^2 ))^2 )+4.16*exp(-(0.83225*sqrt((3-0)^2 ))^2 )+1.46
利用MATLAB中的newrb函数进行函数逼近相关推荐
- Matlab中用于数据预测spline()函数的使用
Matlab中用于数据预测spline()函数的使用 再matlab中spline函数是利用三次方样条数据插值 语法 s = spline(x,y,xq) pp = spline(x,y) s = ...
- matlab中load seamout,matlab中的save与load函数
matlab中的save与load函数 用save函数,可以将工作空间的变量保存成txt文件或mat文件等. 比如: save peng.mat p j 就是将工作空间中的p和j变量保存在peng.m ...
- 邹检验 matlab,科学网—Matlab中一个很有用的函数:regionprops - 邹兴文的博文
Matlab中一个很有用的函数:regionprops 已有 6712 次阅读 2010-1-30 22:52 |个人分类:开发经验|系统分类:科研笔记| 有用的函数, regionprops Mat ...
- 函数调用matlab,Matlab中一个函数调用另外一个函数的操作方法
这篇文章为各位带来的内容是Matlab中一个函数调用另外一个函数相关的,对此感兴趣的用户可以去下文看看Matlab中一个函数调用另外一个函数的操作教程. Matlab中一个函数调用另外一个函数的操作方 ...
- matlab怎么调用主函数,Matlab中一个函数调用另外一个函数的操作步骤
原创Matlab中一个函数调用另外一个函数的操作步骤 编辑:小安 来源:PC下载网时间:2019-11-18 13:27:35 最近很多伙伴才刚刚安装入手Matlab这款软件,而本节就重点介绍了关于M ...
- Matlab中产生正态分布随机数的函数normrnd-----用来产生高斯随机矩阵
Matlab中产生正态分布随机数的函数normrnd-----用来产生高斯随机矩阵 功能:生成服从正态分布的随机数 语法: R=normrnd(MU,SIGMA) R=normrnd(MU,SI ...
- Matlab中print, fprint, fscanf, disp函数的用法
最近一直在用python,导致学习的一些函数就有点混淆,趁着这会儿看代码,就再回顾下Matlab中print, fprint, fscanf, disp函数的用法 一.print() 函数可以把函数图 ...
- matlab2018中变压器模块,利用MATLAB中Sim+Power+Systems模库时变压器模型的参数计算及其仿真结果比较...
[实例简介] 变压器模型 matlab 仿真 参数计算 第21卷第1期向秋风,等:利用 MATLAB中 Sim Power System模库时变压器模型的参数计算及其仿真结果比较 17 其标幺值:R= ...
- 利用MATLAB中 MuPADNotebook组件将程序语言表达式转为数学表达式
前言 在论文写作或数模竞赛中,常需要把已经在程序中列写好的方程或表达式转为数学表达式,呈现在论文或其他书面文本中,利用MATLAB中 MuPADNotebook组件可以在保证高转换准确度的同时,提高我 ...
最新文章
- 从sql中image类型字段中导出图片
- Linux下通过源码编译安装程序
- 《Unity开发实战》——3.9节鼠标悬停时高亮显示材质
- 安卓 屏蔽子控件点击事件
- dell笔记本电脑驱动_笔记本电脑摄像头打不开,怎么办?总结经验(基于摄像头本身是完好的)...
- python 购物车分析_python 简易购物车程序解析
- Java基础知识面试题(2020最新版)
- 爬虫 + 数据分析 - 7 CrawlSpider(全站爬取), 分布式, 增量式爬虫
- lpush rpush 区别_redis中lpush、rpush、lset、lrem是什么
- CMYK与RGB颜色区别
- 半球贴180度全景图片
- 镜像电流源特点_镜像电流源原理及其应用电路
- Python Parser的用法
- 如何把流程图转换为软件设计(初稿)
- ArcGIS API for JavaScript 4.X Basemap类(史上最全)
- uwp windows_如何在Windows 10的UWP游戏中监视FPS
- Python爬虫入门【19】: B站博人传评论数据抓取 scrapy
- python爬取网上租房信息_用python爬取租房网站信息的代码
- JSON从入门到大师
- vue.esm.js?efeb:571 [Vue warn]: Property or method subItem is not defined on the instance but refe