声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2100|回复: 13

[综合讨论] 小波神经网络程序问题怎么解决?(谢谢)

[复制链接]
发表于 2007-1-24 22:25 | 显示全部楼层 |阅读模式

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

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

x
clc
clear
%step 1=========================
%定义输入样本;
x=[9.8917 16.2808 22.2224 16.0717 7.8691 2.7981 1.6043 1.8988 0.4110 37.4368;
    9.1342 14.6104 19.8101 13.2840 12.1585 0.7664 2.6901 1.5111 1.3141 16.4487;
    9.6716 15.4450 20.9055 13.2430 10.0547 0.6452 0.2499 1.2983 0.4624 63.9632;
    9.4330 15.3921 21.0609 14.5206 9.1803 0.2371 0.5343 0.2631 0.2719 56.2736;
    9.9170 16.5965 22.8898 16.7952 11.7638 0.5130 1.0358 1.4984 2.7854 18.6786;
    12.5360 20.4861 27.7885 20.1340 9.3324 0.7193 0.4177 0.5386 0.5750 17.4630;
    10.7219 17.5987 24.0846 17.2131 8.5336 0.8956 0.8594 3.1638 0.7377 95.8756;
    7.9529 12.2725 16.3521 11.1387 10.1894 0.8650 1.1113 2.8885 1.0000 15.2124;
    12.9831 20.6390 27.6185 16.6408 9.8208 0.4561 0.4367 2.4510 1.0128 20.3837;
    8.8662 14.6558 20.1085 15.2818 10.5702 0.3314 0.4614 1.7346 1.0475 15.1164;
    5.1282 6.9760 8.7152 4.7649 6.8872 0.7611 0.7250 4.4827 0.7274 21.0614;
    5.7345 7.8635 9.8005 5.1034 9.7471 0.4253 0.5165 0.9120 0.4378 9.3798;
    5.4486 7.3852 9.1712 4.6508 15.0624 0.8967 0.1785 0.6898 0.6066 19.5064;
    6.5131 8.8169 10.9178 5.0329 21.5843 0.1968 0.2456 2.7955 0.4334 43.7432;
    6.1414 8.3191 10.3136 4.8468 14.1043 0.0853 0.3104 0.8028 0.5529 13.6630;
    5.0588 6.7975 8.4154 4.4592 7.0590 1.0127 0.3262 1.4759 1.2376 5.5029;
    6.0436 8.2930 10.3687 5.1387 5.6913 0.4928 0.1575 0.7601 0.4540 5.0560;
    5.3083 7.1988 8.9417 4.7508 17.8604 0.5241 0.3556 2.0853 1.7921 160.8844;
    6.0549 8.1943 10.1927 4.5722 14.3794 0.1827 0.2974 0.9010 0.5769 14.1162;
    7.6526 10.2548 12.6159 5.0318 9.7971 0.2108 0.1718 1.4304 0.4233 5.4123;
    5.5231 7.3226 8.8652 4.6644 2.6875 0.3591 0.5625 2.6780 0.7393 5.0921;
    4.6882 6.1638 7.4766 4.0891 1.6601 0.0877 0.2299 0.4558 0.1413 5.5794;
    5.4792 7.2693 8.8401 4.4541 1.6617 0.2091 0.4636 1.0347 2.3503 1.7210;
    5.3134 7.0937 8.6922 4.5062 4.0152 0.4075 0.1446 1.3364 0.5235 1.5722;
    5.5252 7.3749 8.9985 4.6200 1.8061 0.8186 0.3707 1.2579 0.8578 14.6108;
    6.1193 8.1845 10.0262 4.6733 1.7265 0.0825 0.1092 0.3967 0.8891 2.8055;
    5.4988 7.2764 8.8632 4.3605 2.3037 0.2721 0.4467 1.3816 1.1445 3.3968;
    4.4257 5.9067 7.2691 4.3216 1.2679 0.1786 0.8886 0.8533 0.1923 1.7171;
    5.6485 7.5262 9.1927 4.6319 1.8498 0.2038 1.3701 1.1569 0.7590 2.6742;
    5.1597 6.8876 8.4379 4.4464 24.1129 0.0728 0.1052 2.2930 0.2615 3.4760;
    6.6346 9.0589 11.2431 5.3571 11.9921 0.2937 0.1710 2.3284 3.6069 10.1040;
    5.4407 7.2866 9.0032 4.4078 9.2213 0.4675 0.2509 1.7718 0.6010 22.1345;
    5.0303 6.7561 8.3516 4.3330 13.6622 0.6600 0.4558 1.2634 0.5331 16.4660;
    5.0678 6.7865 8.3778 4.4263 7.7725 1.1272 0.5207 2.3446 0.8874 7.6544;
    5.1062 6.9215 8.6107 4.7534 6.2806 0.2381 0.1702 1.2152 0.3313 30.1511;
    5.8878 7.9043 9.7423 4.7277 4.4762 0.3916 1.0843 2.0195 1.0058 5.2642;
    5.0775 6.9480 8.6915 4.8889 8.5127 0.1956 1.0742 3.9292 0.8391 40.6147;
    5.7252 7.6745 9.4729 4.5038 9.0513 0.0677 0.2413 0.8304 0.6651 27.6393;
    4.9137 6.6108 8.1802 4.5630 7.8270 0.9127 0.2622 1.3908 0.3243 12.2967;
    4.6780 6.3054 7.8216 4.3178 8.8981 0.3682 0.3749 3.2535 2.5545 109.2149;
    5.5570 7.5502 9.3534 4.9195 7.7383 1.9719 0.5168 5.6967 1.3284 12.3778;
    6.0369 8.1015 9.9654 4.7847 11.5907 0.1522 0.0781 0.3963 0.3942 14.5321;
    6.5061 8.8294 10.9547 5.0455 20.4370 1.6855 1.0918 4.9518 2.9786 7.9449;
    5.9512 8.0494 9.9335 4.8807 10.1185 0.8514 0.6105 4.3704 3.8718 30.5787;
    5.6055 7.5451 9.2977 4.7616 11.0223 2.1319 0.4369 3.1872 2.1992 17.7329;
    5.9762 8.0461 9.8778 4.9732 12.3081 1.3987 0.8011 2.4575 1.5207 19.7396;
    6.6947 9.0696 11.2269 5.1192 13.3338 0.3165 0.4650 0.9679 0.9560 58.2490;
    5.5467 7.4573 9.1776 4.8087 4.7146 0.4632 0.2195 1.4549 1.3643 9.9297;
    5.5185 7.3575 9.0199 4.4404 3.0526 1.1414 1.4765 2.5243 3.2816 4.1411;
    6.7329 9.1903 11.3928 5.8589 11.0579 2.8650 4.0627 7.5779 8.6475 24.8504];
targ=[1 0 0 0 0;1 0 0 0 0;1 0 0 0 0;1 0 0 0 0;1 0 0 0 0;
    1 0 0 0 0;1 0 0 0 0;1 0 0 0 0;1 0 0 0 0;1 0 0 0 0;
    0 1 0 0 0;0 1 0 0 0;0 1 0 0 0;0 1 0 0 0;0 1 0 0 0;
    0 1 0 0 0;0 1 0 0 0;0 1 0 0 0;0 1 0 0 0;0 1 0 0 0;
    0 0 1 0 0;0 0 1 0 0;0 0 1 0 0;0 0 1 0 0;0 0 1 0 0;
    0 0 1 0 0;0 0 1 0 0;0 0 1 0 0;0 0 1 0 0;0 0 1 0 0;
    0 0 0 1 0;0 0 0 1 0;0 0 0 1 0;0 0 0 1 0;0 0 0 1 0;
    0 0 0 1 0;0 0 0 1 0;0 0 0 1 0;0 0 0 1 0;0 0 0 1 0;
    0 0 0 0 1;0 0 0 0 1;0 0 0 0 1;0 0 0 0 1;0 0 0 0 1;
    0 0 0 0 1;0 0 0 0 1;0 0 0 0 1;0 0 0 0 1;0 0 0 0 1];
for i=1:10
x(:,i)=(x(:,i)-0.9324*min(x(:,i)))/(1.0563*max(x(:,i))-0.9324*min(x(:,i)));
end
eta=0.02;
aerfa=0.935;                                                                                                                                                                                                            
%step 2=========================
%初始化连接权wjh(输出层和隐层的连接权);whi(隐层和输出层的连接权);
%假设小波函数节点数为:H个;样本数为P;
%输出节点数为:J个;输入节点数为:I个;
H=25;
P=10;
I=10;
J=5;
PP=2;
%初始化小波参数
b=rand(H,1);
a=rand(H,1);
%初始化权系数;
whi=rand(I,H);
wjh=rand(H,J);
%阈值初始化;
b1=rand(H,1);
b2=rand(J,1);
p=0;
%保存的误差;
count=0;
Err_NetOut=[];
flag=1;
while flag>0
flag=0;
count=count+1;

%step 3=================================
xhp1=zeros(5*P,H);
for i=1:(5*P)
for h=1:H
xhp1(i,h)=xhp1(i,h)+x(i,:)*whi(:,h);
ixhp(i,h)=xhp1(i,h)+b1(h);
end      
end
for i=1:(5*P)
for h=1:H
oxhp(i,h)=fai((ixhp(i,h)-b(h))/a(h));
end
end
%step 4====================================
ixjp1=zeros(5*P,H);
for i=1:(5*P)
for j=1:J
ixjp1(i,j)=ixjp1(i,j)+oxhp(i,:)*wjh(:,j);
ixjp(i,j)=ixjp1(i,j)+b2(j);
end   
end
oxjp=zeros(5*P,J);
for i=1:(5*P)
for j=1:J
oxjp(i,j)=oxjp(i,j)+fnn(ixjp(i,j));
end
end
%step 5==保存每次误差=====
err=oxjp-targ;
wuchayy=1/2*sumsqr(max(abs(err(:,:))));
%E_x=1/2*sumsqr(x);
Err_NetOut=[Err_NetOut wuchayy];%保存每次的误差;
Err_rate=Err_NetOut/E_x;%保存每次的相对误差;

%Err_rate

%oxjp

%求detaj ,detab2==================================
detaj=zeros(J,1);
for j=1:J
for i=1:(5*P)
detaj(j)=detaj(j)-(oxjp(i,j)-targ(i,j))*oxjp(i,j)*(1-oxjp(i,j));
end
end
oxhp1=oxhp';
for j=1:J
for h=1:H
detawjh(h,j)=eta*oxhp1(h,j)*detaj(j);
end
end
detab2=eta*detaj;

%求detah, detawhi detab1 detab detaa;========================

sum=zeros(1,H);
wjh1=wjh';
for h=1:H
for j=1:J
for i=1:(5*P)
sum(h)=detaj(j)*wjh1(j,h)*diffai((ixhp(i,h)-b(h))/a(h))/a(h)+sum(h);
end        
end
end
detah=sum;
x1=x';
detawhi=zeros(I,H);
for h=1:H
for i=1:I
for k=1:(5*P)
detawhi(i,h)=eta*x1(i,k)*detah(h)+detawhi(i,h);
end
end
detab1=eta*detah;
detab=-eta*detah;
detaa=zeros(1,H);
for h=1:H
for i=1:(5*P)
detaa(h)=detaa(h)-eta*detah(h)*((ixhp(i,h)-b(h))/a(h));
end
end

%step 6=========================
%引入动量因子aerfa,修正各个系数==========================================
wjh=wjh+(1+aerfa)*detawjh;
whi=whi+(1+aerfa)*detawhi;
a=a+(1+aerfa)*detaa';
b=b+(1+aerfa)*detab';
b1=b1+(1+aerfa)*detab1';
b2=b2+(1+aerfa)*detab2;

%%step 7=========================
%引入修正算法!!


%判断所有的样本是否计算完==================================
if Err_NetOut(end)>0.05
flag=flag+1;
else
figure;
plot(Err_NetOut);
title('误差曲线');
disp('目标达到');
disp(oxjp);   
end
if count>2000
figure;
plot(Err_NetOut);
title('误差曲线');
disp('目标未达到');
disp(oxjp);
return;
end

为什么没运行?yinhexly@163.com
回复
分享到:

使用道具 举报

发表于 2007-1-24 23:25 | 显示全部楼层

回复

你再仔细检查一下,少了两个end.
另:fai函数的形式是...?

[ 本帖最后由 xjzuo 于 2007-1-24 23:29 编辑 ]
发表于 2007-1-25 10:12 | 显示全部楼层
没看错的,这段程序是照抄别人的,只是简单换了样本,可惜抄了没抄对,那个程序在处理0 1之间的数据是没问题的,而在处理-1到1之间的负数会存在问题,如果做拟合的话,在-1 到1的数就误差很大,当然可以采用变换的方法(变到0 1之间,所谓的乘2-1)
熟悉bp算法的话,写个小波神经网络程序的问题应该不大,建议自己去写程序,尽管你写的没别人好,但至少你会熟悉这个调整过程,别人写的也并非通用程序,简单换个样本就行了。
你可以问自己一下,简单换个样本,就算做出个结果来,有多大的意义,有多少技术含量。。。。。
说这么多的目的,并非不是说不要去借鉴别人的东西,而是说在借鉴别人的东西后要提出自己的东西,否则一味模仿,我觉得意义不大,也很难学到比较深入的东西
 楼主| 发表于 2007-1-25 11:16 | 显示全部楼层
麻烦帮着修改一下,谢谢!二楼提到的修改了,没有理想结果,呵呵!
1. diffai.m
CODE:
function y3=diffai(x);
    y3=-0.75*sin(1.75*x)*exp(-x.^2/2)-cos(1.75*x)*exp(-x.^2/2)*x;

2. fai.m
CODE:
function yl=fai(x)
    yl=cos(0.75.*x)+exp(-x.^2/2);

3. fnn.m
CODE:
function y2=fnn(x)
    y2=1/(1+exp(-x));
发表于 2007-1-25 15:01 | 显示全部楼层

回复

我没有运行你的程序(时间有点长),所以效果好坏就看你自己如何调试了:
??? Undefined function or variable 'E_x'.
%%%--------------------------------------------------------------------%%%
你给的几个函数明显的存在"点运算"写法不对,请仔细检查.
%%%--------------------------------------------------------------------%%%
另: 虽然jimin说的话有些不那么顺耳,不过他也是一番好意.你也可以参考一下他的意见.

[ 本帖最后由 xjzuo 于 2007-1-25 15:24 编辑 ]
 楼主| 发表于 2007-1-25 17:15 | 显示全部楼层
大家好,现在急需整理完,要不明年毕业就成问题了,请大家帮帮忙!这是采取了意见整理后的程序!
x=[9.8917 16.2808 22.2224 16.0717 7.8691 2.7981;
    5.1282 6.9760 8.7152 4.7649 6.8872 0.7611;
    5.5231 7.3226 8.8652 4.6644 2.6875 0.3591;
    5.4407 7.2866 9.0032 4.4078 9.2213 0.4675;
    6.0369 8.1015 9.9654 4.7847 11.5907 0.1522;
    5.5467 7.4573 9.1776 4.8087 4.7146 0.4632];
targ=[1 0 0 0 0;0 1 0 0 0;0 0 1 0 0;0 0 0 1 0;0 0 0 0 1];
I=length(x);
for i=1:I
     x(:,i)=(x(:,i)-0.9324*min(x(:,i)))/(1.0563*max(x(:,i))-0.9324*min(x(:,i)));
end
eta=0.02;
aerfa=0.935;                                                                                                                                                                                                            
%step 2=========================
%初始化连接权wjh(输出层和隐层的连接权);whi(隐层和输出层的连接权);
%假设小波函数节点数为:H个;样本数为P;
%输出节点数为:J个;输入节点数为:I个;
H=25;
P=1;
J=length(targ);
PP=2;
%初始化小波参数
b=rand(H,1);
a=rand(H,1);
%初始化权系数;
whi=rand(I,H);
wjh=rand(H,J);
%阈值初始化;
b1=rand(H,1);
b2=rand(J,1);
p=0;
%保存的误差;
count=0;
Err_NetOut=[];
flag=1;
while flag>0
  flag=0;
  count=count+1;
%step 3=================================
xhp1=zeros(5*P,H);
for i=1:(5*P)
    for h=1:H
        for k=1:I
            xhp1(i,h)=xhp1(i,h)+x(i,k)*whi(k,h);
        end
        ixhp(i,h)=xhp1(i,h)+b1(h);
    end      
end
for i=1:(5*P)
    for h=1:H
        oxhp(i,h)=fai((ixhp(i,h)-b(h))/a(h));
    end
end
%step 4====================================
ixjp1=zeros(5*P,H);
for i=1:(5*P)
    for j=1:J
        for h=1:H
            ixjp1(i,j)=ixjp1(i,j)+oxhp(i,h)*wjh(h,j);
        end
        ixjp(i,j)=ixjp1(i,j)+b2(j);
    end   
end
oxjp=zeros(5*P,J);
for i=1:(5*P)
    for j=1:J
        oxjp(i,j)=oxjp(i,j)+fnn(ixjp(i,j));
    end
end
%step 5==保存每次误差=====
wuchayy=1/2*sumsqr(oxjp-targ);
E_x=1/2*sumsqr(x);
Err_NetOut=[Err_NetOut wuchayy];%保存每次的误差;
Err_rate=Err_NetOut/E_x;%保存每次的相对误差;
%Err_rate
%oxjp
%求detaj ,detab2==================================
detaj=zeros(J,1);
for j=1:J
    for i=1:(5*P)
        detaj(j)=detaj(j)-(oxjp(i,j)-targ(i,j))*oxjp(i,j)*(1-oxjp(i,j));
    end
end
oxhp1=oxhp';
for j=1:J
    for h=1:H
        detawjh(h,j)=eta*oxhp1(h,j)*detaj(j);
    end
end
detab2=eta*detaj;
%求detah, detawhi detab1 detab detaa;========================
sum=zeros(1,H);
wjh1=wjh';
for h=1:H
    for j=1:J
        for i=1:(5*P)
            sum(h)=detaj(j)*wjh1(j,h)*diffai((ixhp(i,h)-b(h))/a(h))/a(h)+sum(h);
        end        
    end
end
detah=sum;
x1=x';
detawhi=zeros(I,H);
for h=1:H
    for i=1:I
        for k=1:(5*P)
           detawhi(i,h)=eta*x1(i,k)*detah(h)+detawhi(i,h);
        end
    end
end
detab1=eta*detah;
detab=-eta*detah;
detaa=zeros(1,H);
for h=1:H
    for i=1:(5*P)
        detaa(h)=detaa(h)-eta*detah(h)*((ixhp(i,h)-b(h))/a(h));
    end
end
%step 6=========================
%引入动量因子aerfa,修正各个系数==========================================
wjh=wjh+(1+aerfa)*detawjh;
whi=whi+(1+aerfa)*detawhi;
a=a+(1+aerfa)*detaa';
b=b+(1+aerfa)*detab';
b1=b1+(1+aerfa)*detab1';
b2=b2+(1+aerfa)*detab2;
%%step 7=========================
%引入修正算法!!
%判断所有的样本是否计算完==================================
if Err_NetOut(end)>0.05
   flag=flag+1;
else
   figure;
   plot(Err_NetOut);
   title('误差曲线');
   disp('目标达到');
   disp(oxjp);   
end
if count>2000
   figure;
   plot(Err_NetOut);
   title('误差曲线');
   disp('目标未达到');
   disp(oxjp);
return;
end
end

存在的问题是不收敛,请帮忙!yinhexly@163.com
 楼主| 发表于 2007-1-25 19:16 | 显示全部楼层
不好意思,说错了,是07年5月毕业,恳请大家帮忙!
发表于 2007-1-26 10:01 | 显示全部楼层
??? Undefined function or method 'fai' for input arguments of type 'double'.
Error in ==> WaveNet at 52
        oxhp(i,h)=fai((ixhp(i,h)-b(h))/a(h));

没有定义这个函数?
发表于 2007-1-26 13:57 | 显示全部楼层
你修改后的程序真的能运行吗?我怎么都无法运行啊?
??? Error using ==> unknown
Matrix dimensions must agree.

输入节点I个现在是6,那你的xhp怎么会是5行25列呢
还有你应该x的第一行对应的是第一个输入样本吧,那P=1,PP=2是什么意思啊?

Error in ==> ex1 at 121
wjh=wjh+(1+aerfa)*detawjh;
另外你定义的几个函数也有问题吧,如果你的小波函数取为fai的形式,那求导过程中也不会出现diffai.m中的sin(1.75x)吧,1.75是不可能得到的。
1. diffai.m
CODE:
function y3=diffai(x);
    y3=-0.75*sin(1.75*x)*exp(-x.^2/2)-cos(1.75*x)*exp(-x.^2/2)*x;
2. fai.m
CODE:
function yl=fai(x)
    yl=cos(0.75.*x)+exp(-x.^2/2);
应该是这样的吧:
function yl=fai(x)
    yl=cos(1.75*x).*exp(-x.^2/2);
function y3=diffai(x);
    y3=-1.75*sin(1.75*x)*exp(-x.^2/2)-cos(1.75*x)*exp(-x.^2/2)*x;

评分

1

查看全部评分

发表于 2007-1-26 15:20 | 显示全部楼层

回复

建议将要解决的问题用word贴出来,以便象jimin这样的高手能够找出出错的原因.
另:我找了一下资料,发现你的程序和早先的一个程序过于相似,
---看来你是想借用其程序来完成你的任务了.
还有,你中间稍做改动的几个地方似乎也不太好.
附图是我运行后的结果(大概十分钟)。

[ 本帖最后由 xjzuo 于 2007-1-26 15:56 编辑 ]
z.jpg
发表于 2007-1-26 16:56 | 显示全部楼层

xiaobo

clc
clear
%step 1=========================
%定义输入样本
originalset=load('D:\data.txt');
eta=0.4;aerfa=0.935;
%初始化连接权wjh(输出层和隐层的连接权);whi(隐层和输入层的连接权)
%假设小波函数节点数为:H个;样本数为P;
%输出节点数为:J个;输入节点数为:I个;
H=30;P=200;
I=5;
J=5;
%初始化小波参数
b=rand(H,1);
a=rand(H,1);
%初始化权系数;
whi=rand(I,H);
wjh=rand(H,J);
%阈值初始化;
b1=rand(H,1);
b2=rand(J,1);
p=0;
%保存的误差;
Err_NetOut=0;
err=[];
flag=1;count=0;
while flag>0
flag=0;
count=count+1;
%err=[err Err_NetOut/37];
Err_NetOut=0;
for r=1:37
   x=originalset(r:r,1:5);
   targ=originalset(r:r,6:10);  
%step 2=================================
xhp1=0;
for h=1:H
for i=1:I
xhp1=xhp1+whi(i,h)*x(i);
end
ixhp(h)=xhp1+b1(h);
xhp1=0;
end
for h=1:H
oxhp(h)=fai((ixhp(h)-b(h))/a(h));
end
%step 3====================================
ixjp1=0;
for j=1:J
for h=1:H
ixjp1=ixjp1+wjh(h,j)*oxhp(h);
end
ixjp(j)=ixjp1+b2(j);
ixjp1=0;
end
for i=1:J
oxjp(i)=fnn(ixjp(i));
end
%step 4==保存每次误差=====
wuchayy=1/2*sumsqr(oxjp-targ);
Err_NetOut=Err_NetOut+wuchayy;%保存每次的误差;
%求detaj ,detab2==================================
for j=1:J
detaj(j)=-(oxjp(j)-targ(j))*oxjp(j)*(1-oxjp(j));
end
for j=1:J
for h=1:H
detawjh(h,j)=eta*detaj(j)*oxhp(h);
end
end
detab2=eta*detaj;
%求detah, detawhi detab1 detab detaa;========================
sum=0;
for h=1:H
for j=1:J
sum=detaj(j)*wjh(h,j)*diffai((ixhp(h)-b(h))/a(h))/a(h)+sum;
end
detah(h)=sum;
sum=0;
end
for h=1:H
for i=1:I
detawhi(i,h)=eta*detah(h)*x(i);
end
end
detab1=eta*detah;
detab=-eta*detah;
for h=1:H
detaa(h)=-eta*detah(h)*((ixhp(h)-b(h))/a(h));
end
%引入动量因子aerfa,修正各个系数==========================================
wjh=wjh+(1+aerfa)*detawjh;
whi=whi+(1+aerfa)*detawhi;
a=a+(1+aerfa)*detaa';
b=b+(1+aerfa)*detab';
b1=b1+(1+aerfa)*detab1';
b2=b2+(1+aerfa)*detab2';
%======================================================
%引入修正算法!!
if p+1==P
    for i=1:5
        out(r,i)=oxjp(i);
    end
end  
end
%step 5判断所有的样本是否计算完==================================
err=[err Err_NetOut/37];
p=p+1;
if p~=P
flag=flag+1;
else
if err(p)>0.05
flag=flag+1;
else
disp('目标达到');
end
end
if count>1000
disp('目标未达到');   
break
end
end
disp('实际输出');
disp(out);
disp(err);

还有函数:
1 fai.m
function yl=fai(x)
    yl=cos(1.75*x).*exp(-x.^2/2);
2 diffai.m
function y3=diffai(x);
    y3=-1.75*sin(1.75*x)*exp(-x.^2/2)-cos(1.75*x)*exp(-x.^2/2)*x;
3. fnn.m  
function y2=fnn(x)
    y2=1/(1+exp(-x));
其中的data.txt是要输入的样本,一共是37个样本,五个输入,五个输出,隐层是30个,我的计划是要把1到37个样本依次运行一遍,然后判断误差err是否小于0.05,没有达到要求的话继续循环,不知道哪里出了问题,运行出来结果基本不正确,请各位高手指教啊,谢谢
发表于 2007-1-26 16:57 | 显示全部楼层

tata.txt

46.1321 11.5723 33.1447 8.5220 0.6289 1 0 0 0 0
0.9811 43.8318 26.7987 28.3884 0 0 1 0 0 0
33.6634 2.9703 33.1683 27.7228 2.4752 1 0 0 0 0
26.8591 16.8866 3.0902 39.4314 13.7326 0 0 0 0 1
39.1837 24.4998 18.3673 11.4286 6.5306 1 0 0 0 0
15.3260 22.1846 17.7815 44.7079 0 0 1 0 0 0
85.8653 7.0013 4.4914 2.6420 0 0 0 0 1 0
35.3516 51.1719 8.0078 5.4688 0 0 1 0 0 0
38.1862 31.0263 7.8759 22.9117 0 0 1 0 0 0
12.1512 40.5041 18.9019 28.3528 0.0900 0 1 0 0 0
0.9620 15.7874 12.2992 70.2462 0.7052 0 0 1 0 0
15.8933 21.8097 3.1903 58.1206 0.9861 0 0 1 0 0
11.3094 21.8343 11.2440 53.1447 2.4645 0 0 1 0 0
20.0730 31.0219 3.8321 43.7956 1.2774 0 0 1 0 0
42.0168 33.6134 14.8459 8.9636 0.5602 1 0 0 0 0
15.9445 30.0131 4.9709 48.7713 0.3001 0 0 1 0 0
57.9832 18.8655 4.6218 8.6555 9.8739 0 0 0 1 0
87.2663 6.5004 5.1647 1.0686 0 0 0 0 1 0
44.4817 50.3567 4.6160 0 0.5455 0 0 0 1 0
20.3852 17.1750 1.7657 24.7191 35.9551 0 0 0 0 1
44.1115 24.5526 6.6583 24.1365 0.5410 0 0 0 0 1
11.2999 21.8352 11.2999 53.1011 2.4639 0 0 1 0 0
48.1545 1.4272 4.0354 22.5394 23.8435 0 0 0 0 1
83.7139 8.0670 5.1750 3.0441 0 0 0 0 1 0
41.1111 18.2222 2.3333 32.2222 6.1111 0 0 0 0 1
46.8085 36.8794 8.5106 7.5177 0.2837 1 0 0 0 0
56.9819 10.4794 1.2837 13.5709 17.6840 0 0 0 0 1
43.7366 17.0177 2.1034 26.2185 10.9237 0 0 0 0 0
3.7648 26.8179 7.2202 61.8876 0.3094 0 0 1 0 1
14.0598 26.8893 7.3814 48.5062 3.1634 0 0 1 0 0
30.1101 39.0330 4.5597 26.1399 0.1572 0 0 1 0 0
24.3207 16.3639 1.6664 30.1756 27.4730 0 0 0 1 0
4.9118 10.1385 62.0907 22.2292 0.6297 0 1 0 0 0
7.0118 26.6582 3.2828 48.7626 14.2845 0 0 1 0 1
27.7196 17.6471 2.5786 36.2611 15.7937 0 0 1 0 1
11.1833 41.9192 21.4100 15.5123 10.2453 0 0 1 0 1
51.4053 19.2308 2.5148 23.2988 3.5503 0 0 1 0 1
 楼主| 发表于 2007-1-26 19:39 | 显示全部楼层
首先感谢各位的顶力帮助!

[ 本帖最后由 yinhexly 于 2007-1-31 23:32 编辑 ]

小波神经网络程序1.doc

42.5 KB, 下载次数: 76

发表于 2013-5-19 10:33 | 显示全部楼层
问题解决了?
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-25 06:33 , Processed in 0.100524 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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