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

📄 hopfield_net.m

📁 对于含有噪声的的数字图像模式“1、2、3、4”
💻 M
字号:
% =========== define input pattern ============
m=12;
n=10;

num1=  [-1 -1 -1 -1 1 1 -1 -1 -1 -1;
        -1 -1 -1 1 1  1 -1 -1 -1 -1;
        -1 -1 1 1 1 1 -1 -1 -1 -1;
        -1 -1 -1 -1 1 1 -1 -1 -1 -1;
        -1 -1 -1 -1 1 1 -1 -1 -1 -1;
        -1 -1 -1 -1 1 1 -1 -1 -1 -1;
        -1 -1 -1 -1 1 1 -1 -1 -1 -1;
        -1 -1 -1 -1 1 1 -1 -1 -1 -1;
        -1 -1 -1 -1 1 1 -1 -1 -1 -1;
        -1 -1 -1 -1 1 1 -1 -1 -1 -1;
        -1 -1 -1 -1 1 1 -1 -1 -1 -1;
        -1 -1 1 1 1 1 1 1 -1 -1];

num2=  [-1 -1 -1 -1 1 1 1 -1 -1 -1; 
        -1 -1 1 1 1 1 1 1 -1 -1;
        -1 1 1 -1 -1 -1 -1 1 1 -1;
        -1 1 -1 -1 -1 -1 -1 -1 1 1;
        1 -1 -1 -1 -1 -1 -1 1 1 -1;
        -1 -1 -1 -1 -1 -1 1 1 -1 -1;
        -1 -1 -1 -1 -1 1 1 -1 -1 -1;
        -1 -1 -1 -1 1 1 -1 -1 -1 -1;
        -1 -1 -1 1 1 -1 -1 -1 -1 -1;
        -1 -1 1 1 -1 -1 -1 -1 -1 -1;
        -1 1 1 -1 -1 -1 -1 -1 -1 -1;
        1 1 1 1 1 1 1 1 1 1];

num3=  [-1 1 1 1 1 1 1 1 1 -1;
        -1 -1 -1 -1 -1 -1 -1 -1 1 -1;
        -1 -1 -1 -1 -1 -1 1 1 -1 -1;
        -1 -1 -1 -1 1 1 -1 -1 -1 -1;
        -1 -1 1 1 -1 -1 -1 -1 -1 -1;
        1 1 1 1 1 1 1 1 -1 -1;
        -1 -1 -1 -1 -1 -1 -1 -1 1 -1;
        -1 -1 -1 -1 -1 -1 -1 -1 -1 1;
        -1 -1 -1 -1 -1 -1 -1 -1 1 -1;
        1 -1 -1 -1 -1 -1 -1 -1 1 -1;
        -1 1 -1 -1 -1 -1 -1 1 -1 -1;
        -1 -1 1 1 1 1 1 -1 -1 -1];

num4=  [-1 -1 -1 -1 -1 1 1 1 -1 -1;
        -1 -1 -1 -1 1 1 1 1 -1 -1;
        -1 -1 -1 1 1 -1 1 1 -1 -1;
        -1 -1 -1 1 1 -1 1 1 -1 -1;
        -1 -1 1 1 -1 -1 1 1 -1 -1;
        -1 -1 1 1 -1 -1 1 1 -1 -1;
        -1 1 1 -1 -1 -1 1 1 -1 -1;
        1 1 -1 -1 -1 -1 1 1 -1 -1;
        1 1 1 1 1 1 1 1 1 1;
        1 1 1 1 1 1 1 1 1 1;
        -1 -1 -1 -1 -1 -1 1 1 -1 -1;
        -1 -1 -1 -1 -1 -1 1 1 -1 -1];


num_tab = cat(3,num1,num2,num3,num4);
vector_tab=[];

for i=1:size(num_tab,3)
   % pattern_plot(num_tab(:,:,i),m,n,i);
    vector_tab=cat(1,vector_tab,matrix2vector(num_tab(:,:,i)));
end

% ============= design hopfield net ================
net_unit=m*n;    % number of unit in net must be more than 4*7 = 28
w=zeros(m*n,m*n);
for i=1:size(vector_tab,1)
    vector=vector_tab(i,:);
    w=w+vector'*vector;
end
for i=1:m*n
    w(i,i)=0;
end

%============== noisy ==========================
noise=input('please input noise volumn(between 0 and 1):\n');
  if ~(noise<1 & noise>0)
      error('noise exceeds the limitation! ');
  end
  noise=round(noise*m*n);
  vector_tab = noisy(vector_tab,noise);

% ============= association process ================
for i=1:size(vector_tab,1)
    vector=vector_tab(i,:);
    flag=1;
    sum=0;
    while (flag==1 & sum<5000)
        sum=sum+1;
        flag=0;
        for j=1:size(vector,2)
            a=sign(w(j,:)*vector');
            if a~=vector(j)
                flag=1;
                vector(j)=a;
            end
        end
    end
    result=(reshape(vector,n,m))';
    pattern_plot(result,m,n,i+size(vector_tab,1));
end
% ==================================================

⌨️ 快捷键说明

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