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

📄 jianmo.m

📁 本程序以matlab为基础针对飞行目标的预测来建模的编程
💻 M
字号:
close all
clear
echo on
clc
%BP建模
%定义网络输入p1
%p1=[];
%期望输出t1
%t1=[];

load D9515a.txt;  qq1=D9515a;  qq1=abs(qq1);
load D9515ab.txt; qq2=D9515ab; qq2=abs(qq2);
load D9515b.txt;  qq3=D9515b;  qq3=abs(qq3);
load D9515bc.txt; qq4=D9515bc; qq4=abs(qq4);
load D9515c.txt;  qq5=D9515c;  qq5=abs(qq5);



%求平均值
%Q=k3950;
for i=1:50
    q1(i)=mean(qq1(i,:));
    q2(i)=mean(qq2(i,:));
    q3(i)=mean(qq3(i,:));
    q4(i)=mean(qq4(i,:));
    q5(i)=mean(qq5(i,:));
end

nl=[q1 q2 q3 q4 q5];
figure(1)
plot(nl)

%训练数据
for i=1:40
    for j=1:40
        a1(j,:)=q1(j:9+j);%a1=a1';
        a2(j,:)=q2(j:9+j);%a1=a1';
        a3(j,:)=q3(j:9+j);%a1=a1';
        a4(j,:)=q4(j:9+j);%a1=a1';
        a5(j,:)=q5(j:9+j);%a1=a1';
        
        
        
        b1(j)=q1(10+j);
        b2(j)=q2(10+j);
        b3(j)=q3(10+j);
        b4(j)=q4(10+j);
        b5(j)=q5(10+j);
       
    end
end
%P=P';
%X=p(1,41:50);
P=[a1;a2;a3;a4];
T=[b1 b2 b3 b4];

%预测数据
A=[a5];

%实际预测结果
X=[b5];
  
p1=P';
t1=T;
p2=A';
t2=X;

%将输入数据归一化
p=p1;t=t1;
[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t)
pause
clc

%设置网络隐单元的神经元数 
n=13;
%建立相应的BP网络
net=newff(minmax(pn),[n,1],{'tansig','purelin'},'traingdm');
%  当前输入层权值和阈值
inputWeights=net.IW{1,1};
inputbias=net.b{1};
%  当前网络层权值和阈值
layerWeights=net.IW{1,1};
layerbias=net.b{2};

% 训练网络
net.trainParam.show=50;
net.trainParam.lr=0.01;%训练速度
net.trainParam.mc=0.9;
net.trainParam.epochs=5000;
net.trainParam.goal=0.015;

%调用TRAINGDM算法训练BP网络
net=train(net,pn,tn);

%对BP网络进行仿真
A=sim(net,pn);
E=A-tn;
M=sse(E)
N=mse(E)

%p2=[],预测数据;
p2=p2;
p2n=tramnmx(p2,minp,maxp);
a2n=sim(net,p2n);
a2=postmnmx(a2n,mint,maxt)
a2=abs(a2);

%将预测的图形和实际的图形显示并进行比较
%显示预测图形
figure(2)
plot(a2,'ro-')
hold on
%显示实际图形
%t2=[];
plot(t2,'g.-')
hold on
%计算仿真误差  
E = t2 - a2 
E=abs(E);
%plot(E,'bo-')
MSE=mse(E) 
echo off

%设置坐标
%axis([0 40 0 10])
set(gca,'Xtick',0:2:40);%设置坐标
title('基于BP网络的故障预测');
xlabel('预测次数'); 
ylabel('预测值和实际值');
%text(35,7,'预测曲线(红)');
%text(35,8,'实际曲线(绿)');
pause
clc

%显示结果并进行比较
t2_a2=[t2;a2]'


%将预测结果和实际结果数据处理
%预测数据
for i=1:40
    if a2(i)>1.9
        a2(i)=1;
    else if a2(i)<=1.9
            a2(i)=0;
        end
    end
end
%实际数据
for i=1:40
    if t2(i)>1.9
        t2(i)=1;
    else if t2(i)<=1.9
            t2(i)=0;
        end
    end
end
%显示处理的结果
figure(3);

plot(a2,'r.')
hold on

plot(t2,'gO')
hold on
axis([0 40 -1 2]);

%计算预测比率
t2_a2=[a2;t2]
x=0;
for i=1:40
    if a2(i)==t2(i)
        x=x+1;
    end
end

bl=x/40  %正确比率
    

⌨️ 快捷键说明

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