⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmac工作过程演示.m

📁 CMAC网络最初主要用来求解机械手的关节运动。W.T.Miller等人把CMAC网络成功的运用到机器人的控制上
💻 M
字号:
%初始化
clear;
clc;
%step1:从S到M的映射
%输入样本的量化
Xs1=['ABCD';'EBCD';'EFCD';'EFGD';'EFGH'];
Xs2=['abcd';'ebcd';'efcd';'dfgd';'dfgh';'ifgh';'ijgh'];
Xs1
Xs2
%step2:从M到A的映射
Ax=[];
for i=1:7
    As=[];
    for j=1:5
        for k=1:4
            p=[Xs1(j,k),Xs2(8-i,k)];
            As=[As,p];
        end
    end
    Ax=[Ax;As];
end
Ax
%step3:从A到Ap的映射
%用“杂散技术”完成多到少的映射
abs(Ax)
Ap=[];
for i=1:7
        for j=1:2:39
        q=Ax(i,j)*1000+Ax(i,j+1);
        k=(j+1)/2;
        Ap(i,k)=q;
    end   
end
Ap
N=rem(Ap,17)
%建全矩阵向量W
W=zeros(16,1);
%查地址表得到权值
M=[];
for i=1:7
    for j=1:1:20
        r=N(i,j)+1;
        s=W(r,1);
        M(i,j)=s;
    end   
end
M
%求和得到输出矩阵Y
Y=[];
for i=1:7
        for j=1:4:17
        q=M(i,j)+M(i,j+1)+M(i,j+2)+M(i,j+3);
        k=(j+3)/4;
        Y(i,k)=q;
    end   
end
Y
%期望输出
Yd=[-1.0000         0    3.5000    2.0000    2.0000
    2.5000    3.5000    0.5000   -1.0000   -1.0000
    2.5000    2.5000   -0.5000   -2.0000   -2.0000
    4.0000    4.0000    1.0000   -0.5000   -1.5000
    5.0000    5.0000    2.0000   -1.0000   -2.0000
    3.5000    3.5000    3.5000    0.5000   -0.5000
    3.5000    2.0000    2.0000   -1.0000   -2.0000];
%权值调整
D=[];
for j=1:5
    for i=1:7
         D(i,j)=Yd(i,j)-Y(i,j);
     end
end  
b=1;
C=4;
for i=1:7
    for j=1:4:17
        r=N(i,j)+1;
        s=W(r,1);
        s=s+b*D(i,(j+3)/4)/C;
        W(r,1)=s;
      r=N(i,j+1)+1;
        s=W(r,1);
        s=s+b*D(i,(j+3)/4)/C;
        W(r,1)=s;
      r=N(i,j)+1;
        s=W(r,1);
        s=s+b*D(i,(j+3)/4)/C;
        W(r,1)=s;
      r=N(i,j+2)+1;
        s=W(r,1);
        s=s+b*D(i,(j+3)/4)/C;
        W(r,1)=s;
      r=N(i,j+3)+1;
        s=W(r,1);
        s=s+b*D(i,(j+3)/4)/C;
        W(r,1)=s;
    end
end
W
%循环学习修改权值
while (sum(abs(D)))>1
M=[];
for i=1:7
    for j=1:1:20
        r=N(i,j)+1;
        s=W(r,1);
        M(i,j)=s;
    end   
end
Y=[];
for i=1:7
        for j=1:4:17
        q=M(i,j)+M(i,j+1)+M(i,j+2)+M(i,j+3);
        k=(j+3)/4;
        Y(i,k)=q;
    end   
end
D=[];
for j=1:5
    for i=1:7
         D(i,j)=Yd(i,j)-Y(i,j);
     end
end

for i=1:7
    for j=1:4:17
        r=N(i,j)+1;
        s=W(r,1);
        s=s+b*D(i,(j+3)/4)/C;
        W(r,1)=s;
      r=N(i,j+1)+1;
        s=W(r,1);
        s=s+b*D(i,(j+3)/4)/C;
        W(r,1)=s;
      r=N(i,j)+1;
        s=W(r,1);
        s=s+b*D(i,(j+3)/4)/C;
        W(r,1)=s;
      r=N(i,j+2)+1;
        s=W(r,1);
        s=s+b*D(i,(j+3)/4)/C;
        W(r,1)=s;
      r=N(i,j+3)+1;
        s=W(r,1);
        s=s+b*D(i,(j+3)/4)/C;
        W(r,1)=s;
    end
end
W
Y
end
W
Y

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -