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

📄 dhnn.m

📁 matlab实现DHNN网络源代码
💻 M
字号:
function DHNN
%DHNN   利用DHNN网络进行模糊数字卡片的识别
%
%   BP_Approximation(hiddennum)构建一个单元数为16的离散Hopfiled网络,利用外积
%规则学习。程序用16位向量表示模糊数字卡片,用数字4和数字7作为两个待存向量,并用表
%示模糊数字的向量对网络进行测试,观察输出结果是否与待存向量一致。

%初始化
n = 16;             %网络单元数为16
maxloop = 500;      %设最大循环次数为500
t = 1;              %初始化循环次数t为1
flag = zeros(1,16); %向量flag用来存储学习过程中的s(t-1)

%输入待存向量进行学习
four = [1 -1 1 -1 1 -1 1 -1 1 1 1 1 -1 -1 1 -1];        %数字4对应的向量
seven = [1 1 1 -1 -1 -1 1 -1 -1 -1 1 -1 -1 -1 1 -1];    %数字7对应的向量

%计算权值矩阵w
w = (four'*four+seven'*seven)/n;
for k = 1:n
    w(k,k) = 0; %权值矩阵的对角元素设为0
end

%请用户输入测试样本
while 1
    s = input('请输入一个的1*16矩阵,矩阵的元素只能为1或-1:');
    if length(s)==n
        break;
    else
        disp('矩阵的大小只能为1*16,请重新输入。');
    end
end
%s = [-1 -1 -1 1 -1 -1 1 -1 -1 -1 1 -1 -1 -1 1 -1];
disp('测试向量为');
disp([s(1) s(2) s(3) s(4);...
    s(5) s(6) s(7) s(8);...
    s(9) s(10) s(11) s(12);...
    s(13) s(14) s(15) s(16)]);

while ~isequal(flag,s) && t<maxloop
    %向量flag用来存储上一循环的的s(t-1)
    flag = s;
    %根据DHNN网络的状态方程进行学习
    for i = 1:n
        v = w(i,:)*s';
        if v>0
            s(i) = 1;
        elseif v<0
            s(i) = -1;
        else
            s(i) = s(i);
        end
    end
end

%观察输出结果
disp('网络的输出结果为:');
disp([s(1) s(2) s(3) s(4);...
    s(5) s(6) s(7) s(8);...
    s(9) s(10) s(11) s(12);...
    s(13) s(14) s(15) s(16)]);

⌨️ 快捷键说明

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