【CMAC小脑】CMAC逼近sin(t)函数的训练和测试
% CMAC逼近sin(t)函数clear all;
close all;
clc;
t=[0:2*pi/360:2*pi];% 自变量t
y=sin(t);%因变量y
min_in=min(t);%输入自变量最小值
max_in=max(t);%输入自变量最大值
n=numel(t);%自变量的位数
size_n=360;%量化等级,越大精度越高
s=[1:size_n];%S空间,输入量化后的离散空间
train_num=180;%用于训练的样本个数
maxgen=50;%最大迭代次数
mse=zeros(1,maxgen);%均方误差向量
gen=0;%实际迭代次数
eta=1.0;%学习率η
error_goal=0.00001;%误差精度要求
A_star=6;%每个状态对应的关联单元个数
common_unit=5;%相邻关联组有相同关联单元个数
a_num=size_n*A_star-(size_n-1)*common_unit;%关联单元总数
a=ones(1,a_num);% a 向量
w=zeros(1,a_num);% 权值向量
% 获取训练样本 的输入和输出
train_in=zeros(1,train_num);%训练样本输入
train_out=zeros(1,train_num);%训练样本输出
for i=1:train_numtrain_in(i)=t(floor((i-1)*n/train_num+1));train_out(i)=y(floor((i-1)*n/train_num+1));
end
% 开始训练样本
for i=1:maxgengen=i;for j=1:train_nums_seq=floor((train_in(j)-min_in)/(max_in-min_in)*(size_n-1))+1;%量化空间S的序号w_seq=(s_seq-1)*(A_star-common_unit)+1;%权值序号ye(j)=sum(w(w_seq:w_seq+A_star-1));%实际输出 for k=w_seq:w_seq+A_star-1 %修正权值w(k)=w(k)+eta*(train_out(j)-ye(j))/A_star;end enderror=0;for j=1:train_numerror=error+(train_out(j)-ye(j))^2;endmse(i)=error;if error<error_goal %误差达到目标值,退出训练break;end
end
%{
%对权值向量进行插值处理
for i=1:a_numif w(i)==0%找到第一个不为零的j=i;while(w(j)==0 && j<a_num)j=j+1;endif j<a_numfor k=i:j-1w(k)=w(j)-(k-i)*(w(j+1)-w(j));endendend
end
%}
%检验训练好的网络
for i=1:ns_seq=floor((t(i)-min_in)/(max_in-min_in)*(size_n-1))+1;%S序号w_seq=(s_seq-1)*(A_star-common_unit)+1;%权值序号yp(i)=sum(w(w_seq:w_seq+A_star-1));
end% 绘图
figure(1);
plot(t,y,'b',t,yp,'r--','linewidth',2);%原曲线和网络输出曲线
title('实际输出和网络输出对比');xlabel('t');ylabel('y-t,yp-t');
figure(2);
plot(train_in,train_out,'linewidth',2);
title('训练样本曲线');xlabel('train_in');ylabel('train_out');
figure(3);
plot([1:gen],mse(1:gen),'linewidth',2);
title('均方误差误差曲线');xlabel('Generation');ylabel('Mean Square Error');
【CMAC小脑】CMAC逼近sin(t)函数的训练和测试相关推荐
- python机器学习 train_test_split()函数用法解析及示例 划分训练集和测试集 以鸢尾数据为例 入门级讲解
文章目录 train_test_split()用法 获取数据 划分训练集和测试集 完整代码脚手架 train_test_split()用法 python机器学习中常用 train_test_split ...
- CMAC小脑模型神经网络与Python实现
CMAC 小脑模型神经网络 简述 CMAC是cerebellar model articulation controller,一种模拟小脑的模型.小脑对肢体动作的操作是近似"反射" ...
- 利用BP神经网络逼近sin函数
利用神经网络逼近sin函数 代码被改得面目全非就不贴了,思路很简单,(1,5,1)的网络,从-pi到pi取1000个点,单个往网络里扔,误差值直接用预测与真实值差值决定,保留正负号,正常求导,速率0. ...
- 【CMAC】基于CMAC小脑模型的人体行走姿态识别算法仿真
1.软件版本 matlab2019a 2.本算法理论知识 CMAC最大特点是局部逼近,因此它具有特殊的结构. 如上图,假设输入是二维,即X=(x1,x2)X=(x1,x2),x1,x2∈[0,5]x1 ...
- 用c语言实现cos(x)与sin(x) 函数以及“绝对值函数”和“阶乘函数”
本人发现网上基本上都是教你如何直接使用C语言库函数来调用cos与sin,但由于很多限制,特别硬件编程,必须要自己写cos和sin函数.网上也有几篇自己实现了cos与sin函数的文章,但是都只有单独实现 ...
- R语言使用caret包构建岭回归模型(Ridge Regression )构建回归模型、通过method参数指定算法名称、通过trainControl函数控制训练过程
R语言使用caret包构建岭回归模型(Ridge Regression )构建回归模型.通过method参数指定算法名称.通过trainControl函数控制训练过程 目录
- R语言使用party包中的ctree函数构建条件推理决策树(Conditional inference trees)、使用plot函数可视化训练好的条件推理决策树、条件推理决策树的叶子节点的阴影区域表
R语言使用party包中的ctree函数构建条件推理决策树(Conditional inference trees).使用plot函数可视化训练好的条件推理决策树.条件推理决策树的叶子节点的阴影区域表 ...
- oxford5k和paris6k数据集介绍_sklearn函数:KFold(分割训练集和测试集)
上一篇介绍了train_test_split函数: 橘猫吃不胖:sklearn函数:train_test_split(分割训练集和测试集)zhuanlan.zhihu.com 主要场景是,我们想要将 ...
- 机器学习之数据集划分——训练集测试集划分,划分函数,估计器的使用
训练集测试集划分,划分函数,估计器的使用 参考文章 训练集.验证集和测试集的划分及交叉验证的讲解 划分训练集和测试集的函数学习 sklearn数据集,数据集划分,估计器详细讲解 参考文章 训练集.验证 ...
最新文章
- js编码java解码_js编码处理(转)
- AI:2020年6月22日北京智源大会演讲分享之认知神经基础专题论坛——15:00-15:40刘嘉教授《From Representation to Comp: the Cognitive N》
- SVN 自动部署到开发环境
- 根据父类id查询所有的父级_父类子类抽象类,super final 重写方法,搞懂继承中复杂的知识点...
- python 加权随机算法_加权随机算法 - 飞儿飞的个人空间 - OSCHINA - 中文开源技术交流社区...
- 计算机二级矿大考点哪个校区,计算机二级考点哪个近一点555
- 《Java程序员面试秘笈》—— 1.3 线程信息的获取和设置
- mysql 只显示箭头_为什么在DOS窗口中使用MySQL时,输入命令后只出现一个箭头,输入什么内容都是这样?...
- 据说这里有一件数据库保密检查神器……
- H5打开APP或小程序
- 智慧社区解决方案_智慧社区建设方案——汇新云
- n维空间的欧氏距离公式_n维欧氏空间中球的体积公式与表面积公式之间的微分关系(论文资料).pdf...
- OpenCV 对象跟踪
- 创蓝253云通讯短信平台变量说明
- 南安普顿大学计算机专业如何,南安普顿大学计算机专业,南安最值得读的专业之一!...
- 【jQuery】基础知识梳理笔记
- 一键装机linux_linux系统学习第十八天《搭建一键装机平台》终结篇
- NOI.5.37雇佣兵
- 仿百度网盘html页面源码,仿百度云主界面
- umeditor的使用教程