声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1140|回复: 5

[综合讨论] 急~小波神经网络

[复制链接]
发表于 2009-1-3 21:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
clear all
%initiate of data
P=3 %numberof sample
m=1%number of input node
n=10%number of hidden node
N=1%number of ouptut node
%
%a(n) b(n) scale and shifting parameter matrix
%x(P,m) input matrix of P sample
%net(P,n) ouput of hidden node
%y(P,N) output of network
%d(P,N) ideal output of network
% phi(P,n) ouput of hidden node wavelet funciton
%W(N,n)weight value between ouput and hidden
%WW(n,m) weight value between  hidden and input node
x=[4;5;6]
d=[1.3;3.6;6.7]
W=rand(N,n)
WW=rand(n,m)
a=ones(1,n)
for j=1:n
b(j)=j*P/n;
end
%%%%%%%%%%%%%%%%%%
%EW(N,n) gradient of W
%EWW(n,m) gradient of WW
%Ea(n) gradient of a
%Eb(n) gradient of b
%%%%%%%%%%%%%%]
epoch=1;
epo=100;
error=0.05;
err=0.01;
delta =1;
lin=0.5;
while (error>=err & epoch<=epo)
     
     u=0;%u is the middle variant
     %caculation of net input
     for p=1:P
         for j=1:n
             u=0;
              for k=1:m
                  u=u+WW(j,k)*x(p,k);
              end
              net(p,j)=u;
              
         end
     end
     %calculation of morlet 0r mexican wavelet output
          for p=1:P
              for j=1:n
                  u=net(p,j);
                  u=(u-b(j))/a(j);
                  phi(p,j)=cos(1.75*u)*exp(-u*u/2); %morlet wavelet
                  %phi(p,j)=(1-u^2)*exp(-u*u/2); %mexican hat wavelet
              end
          end
      %calculation of output of network
     
         for p=1:P
             for i=1:N
                 u=0;
                 for j=1:n
                     u=u+W(i,j)*phi(p,j);
                 end
                 y(p,i)=delta*abs(u);
             end
         end
       %calculation of error of output
       u=0;
     for p=1:P
         for i=1:N
            %u=u+abs(d(p,i)*log(y(p,i))+(1-d(p,i)*log(1-y(p,i))));
            u=u+(d(p,i)-y(p,i))^2;
         end
     end
     %u=u/2
     error=u;
     %calculate of gradient of network
     for i=1:N
         for j=1:n
             u=0;
             for p=1:P
                 u=u+(d(p,i)-y(p,i))*phi(p,j);
             end
             EW(i,j)=u;
             %EW(i,j)=-u;%the resule would be wrong
         end
     end
     for j=1:n
         for k=1:m
             u=0
             for p=1:P
                 for i=1:N
                    u=u+(d(p,i)-y(p,i))*W(i,j)*phi(p,j)*x(p,k)/a(j) ;
                 end
             end
             EWW(j,k)=u;
             %EWW(j,k)=u the result would be wrong
         end
     end
     for j=1:n
             u=0
             for p=1:P
                 for i=1:N
                    u=u+(d(p,i)-y(p,i))*W(i,j)*phi(p,j)/a(j) ;
                 end
             end
             Eb(j)=u;
     end
     for j=1:n
             u=0
             for p=1:P
                 for i=1:N
                    u=u+(d(p,i)-y(p,i))*W(i,j)*phi(p,j)*((net(p,j)-b(j))/b(j))/a(j) ;
                 end
             end
             Ea(j)=u;
     end
    %adjust of weight value
    WW=WW-lin*EWW;
    W=W-lin*EW;
    a=a-lin*Ea;
    b=b-lin*Eb;
     %number of epoch increase by 1
     epoch=epoch+1;
     
end

为啥用以上程序进行小波模式识别处理,得到的U全等于0...(运行时有加数据样本的)
各位大侠帮帮忙~1月6号就要验收啦。。。十万火急  先谢谢了
邮箱:chenxinben2005@163.com

[ 本帖最后由 chincat 于 2009-1-3 21:50 编辑 ]
回复
分享到:

使用道具 举报

发表于 2009-1-3 21:26 | 显示全部楼层

回复 楼主 chincat 的帖子

“用以前程序进行小波模式识别处理”什么意思?
 楼主| 发表于 2009-1-4 15:12 | 显示全部楼层

回复 沙发 ch_j1985 的帖子

用以上程序 ,,,打太快打错了~
发表于 2009-1-4 16:41 | 显示全部楼层

急啊!!

我想求一下小波神经网络识别和提取电压畸变的程序。
发表于 2009-1-4 23:34 | 显示全部楼层

回复 楼主 chincat 的帖子

小波我不懂! 粗略看了下楼主的程序! 太乱了, 改成个人习惯
其中红色部分修改下, 就不会反复输出u=0!
clear all; P=3; m=1; n=10; N=1; x=[4;5;6]; d=[1.3;3.6;6.7]; W=rand(N,n); WW=rand(n,m); a=ones(1,n);
for j=1:n, b(j)=j*P/n; end; epoch=1; epo=100; error=0.05; err=0.01; delta =1; lin=0.5;
while (error>=err & epoch<=epo), u=0; %u is the middle variant
   % caculation of net input
     for p=1:P, for j=1:n, u=0; for k=1:m, u=u+WW(j,k)*x(p,k); end; net(p,j)=u; end; end
   % calculation of morlet 0r mexican wavelet output
     for p=1:P, for j=1:n, u=net(p,j); u=(u-b(j))/a(j); phi(p,j)=cos(1.75*u)*exp(-u*u/2);  end; end
   % calculation of output of network
     for p=1:P, for i=1:N, u=0; for j=1:n, u=u+W(i,j)*phi(p,j); end; y(p,i)=delta*abs(u); end; end
   % calculation of error of output
     u=0; for p=1:P, for i=1:N, u=u+(d(p,i)-y(p,i))^2; end; end; error=u;
   % calculate of gradient of network
     for i=1:N, for j=1:n, u=0; for p=1:P,  u=u+(d(p,i)-y(p,i))*phi(p,j); end; EW(i,j)=u; end; end
     for j=1:n, for k=1:m, u=0; for p=1:P, for i=1:N, u=u+(d(p,i)-y(p,i))*W(i,j)*phi(p,j)*x(p,k)/a(j) ; end; end; EWW(j,k)=u; end; end
     for j=1:n, u=0; for p=1:P, for i=1:N, u=u+(d(p,i)-y(p,i))*W(i,j)*phi(p,j)/a(j) ; end; end; Eb(j)=u; end
     for j=1:n, u=0; for p=1:P, for i=1:N, u=u+(d(p,i)-y(p,i))*W(i,j)*phi(p,j)*((net(p,j)-b(j))/b(j))/a(j) ; end; end; Ea(j)=u; end
     WW=WW-lin*EWW; W=W-lin*EW; a=a-lin*Ea; b=b-lin*Eb; epoch=epoch+1; % adjust of weight value
end

[ 本帖最后由 ChaChing 于 2009-1-4 23:36 编辑 ]
 楼主| 发表于 2009-1-5 09:40 | 显示全部楼层

回复 5楼 ChaChing 的帖子

谢谢大侠帮忙啦
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-22 21:26 , Processed in 0.053624 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表