基于隶属度函数模糊CMAC神经网络算法matlab仿真

简介: 基于隶属度函数模糊CMAC神经网络算法matlab仿真

1.算法描述

   CMAC神经网络具有小脑的机能,因而,被广泛应用于机器人的运动控制。或者反过来说,正是为了机器人的运动控制,Albus构造了CMAC神经系统,以模拟脊椎动物的小脑机能。 正如Albus所说的:“然而,对我来说,CMAC最重要的特征是,它提供了一种认识和理解脑计算的途径,导致了一系列关于智能系统积木的重要见解。”为此,Albus又称CMAC神经网络为小脑算术计算模型(Cerebellar Model ArithmeTIc Computer, CMAC)。

   泛化能力(generalization ability)是指机器学习算法对新鲜样本的适应能力。 学习的目的是学到隐含在数据背后的规律,对具有同一规律的学习集以外的数据,经过训练的网络也能给出合适的输出。CMAC网络中,若两个输入向量相近,则他们所触发的神经元有重叠,距离越近,重叠越多;若两个输入向量相距较远,则它们触发的神经元没有重叠。因此CMAC网络具有局部泛化能力,它的泛化能力源自于它的网络结构本身。

    影响CMAC泛化精度的主要因素有:训练精度、泛化常数和样本点选择。对于一个神经网络来说,泛化能力越强,意味着经过样本点训练后,对于样本集附近的非样本点的输入,网络输出与期望输出间的误差越小。

1)CMAC是局部逼近神经网络,只对输入空间的小部分范围进行训练,只有相应小部分的几个权值调节神经网络的输出,因此对于每次的输入输出数据需要调整的权值很少,学习速度比全局神经网络快,更能符合实时控制的要求。
2)CMAC具有较强的输入和输出的映射能力,并且可以根据不同的精度要求来逼近任意类型函数。
3)CMAC具有局部泛化能力,对具有同一规律的学习集以外的数据,经过训练,网络也能给出合适的输出。
4)CMAC采用查表寻址方式,易于计算机编程实现,网络形式简单,在线计算速度快。

2.仿真效果预览
matlab2022a仿真结果如下:

ba1ad9c42177230365d932c66aed6ce2_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
0744a9157b450de03737dc0f14433a85_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
abbc8f47a3196fe4e995ea62c0041946_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

3.MATLAB核心程序

y=y1_train;%因变量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_num
    train_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:maxgen
    gen=i;
    for j=1:train_num
        s_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        
    end
    error=0;
    for j=1:train_num
        error=error+(train_out(j)-ye(j))^2;
    end
    mse(i)=error;
    if error<error_goal %误差达到目标值,退出训练
        break;
    end    
end
%检验训练好的网络
t2=x_test;% 自变量t
y2=y1_test;%因变量y
n=numel(t2);%自变量的位数
min_in=min(t2);%输入自变量最小值
max_in=max(t2);%输入自变量最大值
n=numel(t2);%自变量的位数
size_n=360;%量化等级,越大精度越高
for i=1:n
    s_seq=floor((t2(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
相关文章
|
1天前
|
算法 数据挖掘 vr&ar
基于ESTAR指数平滑转换自回归模型的CPI数据统计分析matlab仿真
该程序基于ESTAR指数平滑转换自回归模型,对CPI数据进行统计分析与MATLAB仿真,主要利用M-ESTAR模型计算WNL值、P值、Q值及12阶ARCH值。ESTAR模型结合指数平滑与状态转换自回归,适用于处理经济数据中的非线性趋势变化。在MATLAB 2022a版本中运行并通过ADF检验验证模型的平稳性,适用于复杂的高阶自回归模型。
|
1天前
|
机器学习/深度学习 算法
基于心电信号时空特征的QRS波检测算法matlab仿真
本课题旨在通过提取ECG信号的时空特征并应用QRS波检测算法识别心电信号中的峰值。使用MATLAB 2022a版本实现系统仿真,涵盖信号预处理、特征提取、特征选择、阈值设定及QRS波检测等关键步骤,以提高心脏疾病诊断准确性。预处理阶段采用滤波技术去除噪声,检测算法则结合了一阶导数和二阶导数计算确定QRS波峰值。
|
1天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于PSO粒子群优化的GroupCNN分组卷积网络时间序列预测算法matlab仿真
本项目展示了一种结合粒子群优化(PSO)与分组卷积神经网络(GroupCNN)的时间序列预测算法。该算法通过PSO寻找最优网络结构和超参数,提高预测准确性与效率。软件基于MATLAB 2022a,提供完整代码及详细中文注释,并附带操作步骤视频。分组卷积有效降低了计算成本,而PSO则智能调整网络参数。此方法特别适用于金融市场预测和天气预报等场景。
|
5天前
|
算法 5G 数据安全/隐私保护
SCM信道模型和SCME信道模型的matlab特性仿真,对比空间相关性,时间相关性,频率相关性
该简介展示了使用MATLAB 2022a进行无线通信信道仿真的结果,仿真表明信道的时间、频率和空间相关性随间隔增加而减弱,并且宏小区与微小区间的相关性相似。文中介绍了SCM和SCME模型,分别用于WCDMA和LTE/5G系统仿真,重点在于其空间、时间和频率相关性的建模。SCME模型在SCM的基础上进行了扩展,提供了更精细的参数化,增强了模型的真实性和复杂度。最后附上了MATLAB核心程序,用于计算不同天线间距下的空间互相关性。
10 0
|
5天前
|
算法
基于极大似然算法的系统参数辨识matlab仿真
本程序基于极大似然算法实现系统参数辨识,对参数a1、b1、a2、b2进行估计,并计算估计误差及收敛曲线,对比不同信噪比下的误差表现。在MATLAB2022a版本中运行,展示了参数估计值及其误差曲线。极大似然估计方法通过最大化观测数据的似然函数来估计未知参数,适用于多种系统模型。
|
3月前
|
机器学习/深度学习 PyTorch 算法框架/工具
【从零开始学习深度学习】26.卷积神经网络之AlexNet模型介绍及其Pytorch实现【含完整代码】
【从零开始学习深度学习】26.卷积神经网络之AlexNet模型介绍及其Pytorch实现【含完整代码】
|
3月前
|
机器学习/深度学习 PyTorch 算法框架/工具
【从零开始学习深度学习】28.卷积神经网络之NiN模型介绍及其Pytorch实现【含完整代码】
【从零开始学习深度学习】28.卷积神经网络之NiN模型介绍及其Pytorch实现【含完整代码】
|
1月前
|
机器学习/深度学习 PyTorch 算法框架/工具
PyTorch代码实现神经网络
这段代码示例展示了如何在PyTorch中构建一个基础的卷积神经网络(CNN)。该网络包括两个卷积层,分别用于提取图像特征,每个卷积层后跟一个池化层以降低空间维度;之后是三个全连接层,用于分类输出。此结构适用于图像识别任务,并可根据具体应用调整参数与层数。
|
1月前
|
机器学习/深度学习 数据可视化 Python
如何可视化神经网络的神经元节点之间的连接?附有Python预处理代码
该博客展示了如何通过Python预处理神经网络权重矩阵并将其导出为表格,然后使用Chiplot网站来可视化神经网络的神经元节点之间的连接。
34 0
如何可视化神经网络的神经元节点之间的连接?附有Python预处理代码
|
1月前
|
机器学习/深度学习 Linux TensorFlow
【Tensorflow+keras】用代码给神经网络结构绘图
文章提供了使用TensorFlow和Keras来绘制神经网络结构图的方法,并给出了具体的代码示例。
35 0