load('bear3_3vibdata.mat')
A=vdata';
a2=A(1,1:900000);
a=reshape(a2,length(a2)/9,9);
% 1-10
% w=zeros(1400,10);
% w(1:140,1)=1;
% w(141:280,2)=1;
% w(281:420,3)=1;
% w(421:540,4)=1;
% w(561:700,5)=1;
% w(701:840,6)=1;
% w(841:980,7)=1;
% w(981:1120,8)=1;
% w(1121:1260,9)=1;
% w(1261:1400,10)=1;
w=zeros(100000,10);
w(1:40000,1)=1;
w(40001:8000,2)=1;
w(80001:100000,3)=1;
B=[a,w];
C=B(randperm(100000, 100000),:);
train_x=C(1:90000,1:9);
train_y=C(1:90000,10:19);
test_x=C(90001:100000,1:9);
test_y=C(90001:100000,10:19);
%a1=A(1,1:1111000);
% % a=abs(a1);
% % b1= rms(reshape(a,10,length(a)/10));
% % b2=kurtosis(reshape(a,10,length(a)/10));
% % b3= max(reshape(a,10,length(a)/10));
% % b4=var(reshape(a,10,length(a)/10));
% % g=[b1;b2;b3;b4];
% % z=g';
% % c=b1(1:1:2000);
% % d=reshape(c,4,500);
% % e=d';
% % M=z(1:500:end,:);
% % v=zeros(111100,10);
% % v(1:60000,1)=1;
% % v(60001:80000,1)=1;
% % v(80001:111100,3)=1;
% % train_x=z(1:2:end,:);
% % train_y=v(1:2:end,:);
% % test_x=z(2:500:end,:);
% % test_y=v(2:500:end,:);
% % % w=zeros(223,1);
% % % w(1:60000,1)=1;
% % % w(60001:80000,1)=1;
% % % w(80001:111100,3)=1;
% % y=repmat(1:1:22,10,1);
% % y=y(:);
% row=size(z,1)
% line=size(z,2)
% m=1;
% n=100;
% time=row/(m+n) %循环次数求解
% B=zeros(m*time,line) %目标矩阵初始化
% for i=1:time
% k=((n+1)*n+m))+(i-1)*(m+n)
% j=(1:m)+(i-1)*m
% B(1:m,=A(k,
% end
% % load('bear3_3vibdata.mat')
% % A=vdata';
% % a=A(1,1:1111000);
% % b = rms(reshape(a,500,length(a)/500));
% % c=b(1,1:2000);
% % d=reshape(c,4,500);
% % e=d';
% % % c=[2 2 2 2 2 4 4 4 4 4 ];
% % % d=mean(reshape(c,2,length(c)/2));
% % % for i=0:1000
% % % y(i)=x(1,1000*i+1:1000*i+1000);
% % % z(i)=rms(y(i));
% % % end
% % %
% clc
% clear
%
% All_error=[];%所有误差存储
%
% %---------------------------------------------------
% %原始数据
% %---------------------------------------------------
% year=1986:2000;%数据是从1986到2000年的
%
% p=[493 372 445;372 445 176;445 176 235;176 235 378;235 378 429;...
% 378 429 561;429 561 651;561 651 467;651 467 527;467 527 668;...
% 527 668 841; 668 841 526;841 526 480;526 480 567;480 567 685]';%输入数据,共15组,每组3个输入
% t=[176 235 378 429 561 651 467 527 668 841 526 480 567 685 507];%输出数据,共15组,每组1个输出
%
%
% %---------------------------------------------------
% %数据归一化处理,归一化数据到[-1,1],mapminmax函数调用形式
% %[y,ps] =%mapminmax(x,ymin,ymax),x需归化的数据输入,
% %ymin,ymax为需归化到的范围,不填默认为归化到[-1,1]
% %返回归化后的值y,以及参数ps,ps在结果反归一化中,需要调用
% %---------------------------------------------------
% [normInput,ps] = mapminmax(p);
% [normTarget,ts] = mapminmax(t);
%
%
% %---------------------------------------------------
% %数据乱序,及分类处理,将输入的15组数据,0.2%既3组,用来作为测试数据,
% % 0.2%既3组,用来作为变化数据,另外9组用来正常输入,用来训练
% %DIVIDEVEC用来重新随机抽取上述三种分类的数据,原来的顺序被打乱
% %函数调用的语法[trainV,valV,testV] = dividevec(p,t,valPercent,testPercent)
% %输入p为输入数据,t为输出数据,valPercent为训练用的变化数据在总输入中的百分比
% %testPercent为训练用的测试数据在总输入中的百分比
% %输出trainV,valV,testV分别为按乱序及相应百分比,得到的数据
% %另外,打乱后的数据,p和t都是对应的,请放心使用
% %---------------------------------------------------
% testPercent = 0.20; % Adjust as desired
% validatePercent = 0.20; % Adust as desired
% [trainSamples,validateSamples,testSamples] = dividevec(normInput,normTarget,validatePercent,testPercent);
%
% for j=1:200
% %---------------------------------------------------
% % 设置网络参数
% %---------------------------------------------------
% NodeNum1 = 20; % 隐层第一层节点数
% NodeNum2=40; % 隐层第二层节点数
% TypeNum = 1; % 输出维数
%
% TF1 = 'tansig';TF2 = 'tansig'; TF3 = 'tansig';%各层传输函数,TF3为输出层传输函数
% %如果训练结果不理想,可以尝试更改传输函数,以下这些是各类传输函数
% %TF1 = 'tansig';TF2 = 'logsig';
% %TF1 = 'logsig';TF2 = 'purelin';
% %TF1 = 'tansig';TF2 = 'tansig';
% %TF1 = 'logsig';TF2 = 'logsig';
% %TF1 = 'purelin';TF2 = 'purelin';
%
%
% net=newff(minmax(normInput),[NodeNum1,NodeNum2,TypeNum],{TF1 TF2 TF3},'traingdx');%网络创建
%
%
%
% %---------------------------------------------------
% % 设置训练参数
% %---------------------------------------------------
% net.trainParam.epochs=10000;%训练次数设置
% net.trainParam.goal=1e-6;%训练目标设置
% PL.lr=0.01;%学习率设置,应设置为较少值,太大虽然会在开始加快收敛速度,但临近最佳点时,会产生动荡,而致使无法收敛
% %---------------------------------------------------
% % 指定训练参数
%
% % net.trainFcn = 'traingd'; % 梯度下降算法
% % net.trainFcn = 'traingdm'; % 动量梯度下降算法
% %
% % net.trainFcn = 'traingda'; % 变学习率梯度下降算法
% % net.trainFcn = 'traingdx'; % 变学习率动量梯度下降算法
% %
% % (大型网络的首选算法)
% % net.trainFcn = 'trainrp'; % RPROP(弹性BP)算法,内存需求最小
% %
% % 共轭梯度算法
% % net.trainFcn = 'traincgf'; % Fletcher-Reeves修正算法
% % net.trainFcn = 'traincgp'; % Polak-Ribiere修正算法,内存需求比Fletcher-Reeves修正算法略大
% % net.trainFcn = 'traincgb'; % Powell-Beal复位算法,内存需求比Polak-Ribiere修正算法略大
% % (大型网络的首选算法)
% %net.trainFcn = 'trainscg'; % Scaled Conjugate Gradient算法,内存需求与Fletcher-Reeves修正算法相同,计算量比上面三种算法都小很多
% %
% % net.trainFcn = 'trainbfg'; % Quasi-Newton Algorithms - BFGS Algorithm,计算量和内存需求均比共轭梯度算法大,但收敛比较快
% % net.trainFcn = 'trainoss'; % One Step Secant Algorithm,计算量和内存需求均比BFGS算法小,比共轭梯度算法略大
% %
% % (中型网络的首选算法)
% %net.trainFcn = 'trainlm'; % Levenberg-Marquardt算法,内存需求最大,收敛速度最快
% %
% % net.trainFcn = 'trainbr'; % 贝叶斯正则化算法
% %
% % 有代表性的五种算法为:'traingdx','trainrp','trainscg','trainoss', 'trainlm'
%
% net.trainfcn='traingdm';
% [net,tr] = train(net,trainSamples.P,trainSamples.T,[],[],validateSamples,testSamples);
%
% %---------------------------------------------------
% % 训练完成后,就可以调用sim()函数,进行仿真了
% %---------------------------------------------------
% [normTrainOutput,Pf,Af,E,trainPerf] = sim(net,trainSamples.P,[],[],trainSamples.T);%正常输入的9组p数据,BP得到的结果t
% [normValidateOutput,Pf,Af,E,validatePerf] = sim(net,validateSamples.P,[],[],validateSamples.T);%用作变量3的数据p,BP得到的结果t
% [normTestOutput,Pf,Af,E,testPerf] = sim(net,testSamples.P,[],[],testSamples.T);%用作测试的3组数据p,BP得到的结果t
%
%
% %---------------------------------------------------
% % 仿真后结果数据反归一化,如果需要预测,只需将预测的数据P填入
% % 将获得预测结果t
% %---------------------------------------------------
% trainOutput = mapminmax('reverse',normTrainOutput,ts);%正常输入的9组p数据,BP得到的归一化后的结果t
% trainInsect = mapminmax('reverse',trainSamples.T,ts);%正常输入的9组数据t
% validateOutput = mapminmax('reverse',normValidateOutput,ts);%用作变量3的数据p,BP得到的归一化的结果t
% validateInsect = mapminmax('reverse',validateSamples.T,ts);%用作变量3的数据t
% testOutput = mapminmax('reverse',normTestOutput,ts);%用作变量3组数据p,BP得到的归一化的结果t
% testInsect = mapminmax('reverse',testSamples.T,ts);%用作变量3组数据t
%
% %绝对误差计算
% absTrainError = trainOutput-trainInsect;
% absTestError = testOutput-testInsect;
% error_sum=sqrt(absTestError(1).^2+absTestError(2).^2+absTestError(3).^2);
% All_error=[All_error error_sum];
% eps=90;%其为3组测试数据的标准差,或者每个数据偏差在一定范围内而判别
% if ((abs(absTestError(1))<=30 )&(abs(absTestError(2))<=30)&(abs(absTestError(3))<=30)|(error_sum<=eps))
% save mynetdata net
% break
% end
% j
% end
% j
% Min_error_sqrt=min(All_error)
%
% testOutput
% testInsect
%
% %---------------------------------------------------
% % 数据分析和绘图
% %---------------
评论0