% 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)函数的训练和测试相关推荐

  1. python机器学习 train_test_split()函数用法解析及示例 划分训练集和测试集 以鸢尾数据为例 入门级讲解

    文章目录 train_test_split()用法 获取数据 划分训练集和测试集 完整代码脚手架 train_test_split()用法 python机器学习中常用 train_test_split ...

  2. CMAC小脑模型神经网络与Python实现

    CMAC 小脑模型神经网络 简述 CMAC是cerebellar model articulation controller,一种模拟小脑的模型.小脑对肢体动作的操作是近似"反射" ...

  3. 利用BP神经网络逼近sin函数

    利用神经网络逼近sin函数 代码被改得面目全非就不贴了,思路很简单,(1,5,1)的网络,从-pi到pi取1000个点,单个往网络里扔,误差值直接用预测与真实值差值决定,保留正负号,正常求导,速率0. ...

  4. 【CMAC】基于CMAC小脑模型的人体行走姿态识别算法仿真

    1.软件版本 matlab2019a 2.本算法理论知识 CMAC最大特点是局部逼近,因此它具有特殊的结构. 如上图,假设输入是二维,即X=(x1,x2)X=(x1,x2),x1,x2∈[0,5]x1 ...

  5. 用c语言实现cos(x)与sin(x) 函数以及“绝对值函数”和“阶乘函数”

    本人发现网上基本上都是教你如何直接使用C语言库函数来调用cos与sin,但由于很多限制,特别硬件编程,必须要自己写cos和sin函数.网上也有几篇自己实现了cos与sin函数的文章,但是都只有单独实现 ...

  6. R语言使用caret包构建岭回归模型(Ridge Regression )构建回归模型、通过method参数指定算法名称、通过trainControl函数控制训练过程

    R语言使用caret包构建岭回归模型(Ridge Regression )构建回归模型.通过method参数指定算法名称.通过trainControl函数控制训练过程 目录

  7. R语言使用party包中的ctree函数构建条件推理决策树(Conditional inference trees)、使用plot函数可视化训练好的条件推理决策树、条件推理决策树的叶子节点的阴影区域表

    R语言使用party包中的ctree函数构建条件推理决策树(Conditional inference trees).使用plot函数可视化训练好的条件推理决策树.条件推理决策树的叶子节点的阴影区域表 ...

  8. oxford5k和paris6k数据集介绍_sklearn函数:KFold(分割训练集和测试集)

    上一篇介绍了train_test_split函数: 橘猫吃不胖:sklearn函数:train_test_split(分割训练集和测试集)​zhuanlan.zhihu.com 主要场景是,我们想要将 ...

  9. 机器学习之数据集划分——训练集测试集划分,划分函数,估计器的使用

    训练集测试集划分,划分函数,估计器的使用 参考文章 训练集.验证集和测试集的划分及交叉验证的讲解 划分训练集和测试集的函数学习 sklearn数据集,数据集划分,估计器详细讲解 参考文章 训练集.验证 ...

最新文章

  1. js编码java解码_js编码处理(转)
  2. AI:2020年6月22日北京智源大会演讲分享之认知神经基础专题论坛——15:00-15:40刘嘉教授《From Representation to Comp: the Cognitive N》
  3. SVN 自动部署到开发环境
  4. 根据父类id查询所有的父级_父类子类抽象类,super final 重写方法,搞懂继承中复杂的知识点...
  5. python 加权随机算法_加权随机算法 - 飞儿飞的个人空间 - OSCHINA - 中文开源技术交流社区...
  6. 计算机二级矿大考点哪个校区,计算机二级考点哪个近一点555
  7. 《Java程序员面试秘笈》—— 1.3 线程信息的获取和设置
  8. mysql 只显示箭头_为什么在DOS窗口中使用MySQL时,输入命令后只出现一个箭头,输入什么内容都是这样?...
  9. 据说这里有一件数据库保密检查神器……
  10. H5打开APP或小程序
  11. 智慧社区解决方案_智慧社区建设方案——汇新云
  12. n维空间的欧氏距离公式_n维欧氏空间中球的体积公式与表面积公式之间的微分关系(论文资料).pdf...
  13. OpenCV 对象跟踪
  14. 创蓝253云通讯短信平台变量说明
  15. 南安普顿大学计算机专业如何,南安普顿大学计算机专业,南安最值得读的专业之一!...
  16. 【jQuery】基础知识梳理笔记
  17. 一键装机linux_linux系统学习第十八天《搭建一键装机平台》终结篇
  18. NOI.5.37雇佣兵
  19. 仿百度网盘html页面源码,仿百度云主界面
  20. umeditor的使用教程

热门文章

  1. NABC框架的创意之校园导航。
  2. c# 泛型有什么作用?
  3. C#2.0泛型-Dictionary,List的用法
  4. UA OPTI512R 傅立叶光学导论16 Nyquist-Shannon采样定理
  5. 脑与神经科学3 脑神经影像上
  6. 在共享DLL中使用MFC 和在静态库中使用MFC的区别
  7. VC mfc 多文档程序更改子文档标题名
  8. Windows从命令行创建文本文件的两种方式
  9. 组件通信 $ref
  10. HTML td 标签的 colspan 属性