微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 测试测量 > Labview > 求指导,求解答

求指导,求解答

时间:10-02 整理:3721RD 点击:

有没有谁会小波神经网络预测算法的设计啊,需要在MATLAB里面实现的,这是其中一部分,但是在MATLAB里面实现不了,有谁会完整的程序设计吗?着急啊,帮帮忙吧

%%网络初始化

Load fan_fault input output input_test  output_test;%导入所有样本数据

M=size(input,7);%输入节点个数

N=size(ouput,7);%输出节点个数

n=5;%隐形节点个数

lr1=0.01;%学习概率

lr2=0.001;%学习概率

maxgen=100;%迭代次数

%权值初始化

Wjk=randn(n,M);Wjk_1=Wjk;Wjk_2=Wjk_1;

Wij=randn(N,n);Wij_1=Wij;Wij_2=Wij_1;

a= randn(1,n);a_1=a;a_2=a_1;

b= randn(1,n);b_1=b;b_2=b_1;

%节点初始化

y=zeros(1,N);

net=zeros(1,N);

net_ab=zeros(1,n);

%权值学习增量初始化

d_Wjk=zeros(n,N);

d_Wij=zeros(N,n);

d_a=zeros(1,n);

d_b=zeros(1,n);

%%输入输出数据归一化

[inputn,inputps]=mapminmax(input’);

[ouputn,ouputps]=mapminmax(ouput’);

inputn=inputn’;

ouputn=output’;

%%网络训练

for i=1 :maxgen

        error(i)=0;%记录每次误差

   %循环训练

        for kk=1:size(inut,1)

x=inputn(kk,:);

        yqw=ouputn(kk,:);

%网络预测输出

        for j=1:n

                for k=1:M

                        net(j)=net(j)+Wjk(j,k)*x(k);

                        net_ab(j)=(net(j)-b(j))/a(j);

                end

                temp=mymorlet(net_ab(j));

                for k=1:N

                        y=y+Wij(k,j)*temp;    %小波函数

        end

end

%误差累积

Error(i)=error(i)+sum(abs(yqw-y));

%权值调整

For j=1:n

        %计算d_Wij

        Temp=mymorlet(net_ab(j));

        For k=1:N

                d_Wij(k,j)=d_Wij(k,j)-(yqw(k)-y(k))*temp;

        end

        %计算d_Wjk

        Temp=mymorlet(net_ab(j));

        For k=1:M

                d_Wjk(j,k)=d_ Wjk(j,k)+(yqw(1)-y(1))* Wij(1,j);

        end

%计算d_b

        For k =1:N

d_b(j)=d_ b(j)+(yqw(k)-y(k))* Wij(k,j);

        end

d_b(j)=d_ b(j)*temp/a(j);

%计算d_a

For k=1:N

d_a(j)=d_ a(j)+(yqw(k)-y(k))* Wij(k,j);

end

d_a(j)=d_ a(j)*temp*((net(j)-b(j))/b(j))/a(j);

end

%权值参数更新

Wij=Wij-lr1*d_Wij;

Wjk=Wjk-lr1*d_Wjk;

b=b-lr2*d_b;

a=a-lr2*d_a;

d_Wjk=zeros(n,M);

d_Wij=zeros(N,n);

d_a=zeros(1,n);

d_b=zeros(1,n);

y=zeros(1,N);

net=zeros(1,n);

net_ab=zeros(1,n);

Wjk_1= Wjk; Wjk_2= Wjk_1;

Wij_1= Wij; Wij_2= Wij_1;

a_1=a;a_2=a_1;

b_1=b;b_2=b_1;

end

end

%%网络预测

%预测输入归一化

x=mapminmax(‘apply’,input_test’,inputps);

x=x’

%网络预测

for i=1:92

        x_test=x(i,:);

        for j=1:1:n

                for k=1:1:M

                        net(j)=net(j)+Wjk(j,k)*x_test(k);

                        net_ab(j)=(net(j)-b(j))/a(j);

                end

                        temp=mymorlet(net_ab(j));

                        for k=1:N

                                y(k)=y(k)+Wij(k,j)*tempt;

                        end

        end

yuce(i)=y(k);%预测结果记录

y=zeros(1,N);%输出节点初始化

net=zeros(1:n);%隐含层初始化

net_ab=zeros(1,n);%隐含节点初始化

end

%预测输出反归一化

Ynn=mapminmax(‘reverse’,yuce,outputps);

%%网络预测结果

figure(1)

plot(ynn,’r*:’)

hold on

plot(output_test,’bo—‘)

title(‘预测值’,’fontsize’,12)

legend(‘预测值’,’实际值’)

xlabel(‘时间点’)

ylabel(‘故障’)

%%网络预测误差图形

figure(2)

plot(error,’r*:’)

hold on

title(‘网络误差曲线’,’ fontsize’,12)

legend(‘Wavelet Neural Network’,’Expecting Outionput Error’)

xlabel(‘Iteration’)

ylabel(‘Error’)


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top