亚洲天堂网_国产中出_日韩激情网_97se.com_中国亚洲老少妇色视频

MATLAB代做|MATLAB專業(yè)代做|GMDH算法仿真代做

發(fā)布時間:2019/8/16 瀏覽數:9735
clear
X=xlsread('Xdata.xls');
Y=xlsread('Ydata.xls');
Xsize=size(X);
X=[X,ones(Xsize(1),1)];
Xsize=size(X);
%************************************************************
%***********自己可以在此處調整chcecknum參數值**********
%************************************************************
checknum=1;
%************************************************************
Xsize=size(X);
if checknum+1>Xsize(1) 
disp([blanks(10),'注意:請輸入正確的學習樣本數,它最多比樣本總數目少一個']),return;
end
Xorig=X(1:checknum,:);
Xcheck=X(checknum+1:end,:);
Yorig=Y(1:checknum);
Ycheck=Y(checknum+1:end);
cmbarrayselt(1,100)=struct('ynear',[],'yerror',[],'ycoef',[]);
for i=1:100 cmbarrayselt(i).yerror=9e+99;
end
cmbarrytemp(1,1)=struct('ynear',[],'yerror',[],'ycoef',[]);
cmbarray1(1,100)=struct('ynear',[],'yerror',[],'ycoef',[]);
cmbarray2(1,100)=struct('ynear',[],'yerror',[],'ycoef',[]);
%varnum變量的數日
varnum=Xsize(2);
%
%conicoef每次預留的白變量數日,最少定為變量數日個,最多不超過100個,這里是自動找出6到100之間的總體最優(yōu)
%************************************************************
%***********白己可以在此處調整contcoef參數值
%************************************************************
for contcoef=varnum:100
%************************************************************
for i=1:varnum cmbarray2(i).ycoef=zeros(varnum,1);
end
XX=eye(varnum);
for i=1:varnum cmbarray1(i).ynear=Xorig(:,i);cmbarray1(i).ycoef=XX(:,i);
end
for i=1:contcoef cmbarray1(i).yerror=9e+99;
cmbarray2(i).yerror=9e+99;
end
%
%停止標志simblestop
simblestop=1;
while simblestop>0
%
%
for i=1:varnum-1
%
for j=i:varnum-1
%求擬合多項式系數
if i==j
cmbcoefdbl=regress(Yorig,[ones(checknum,1),cmbarray1(i).ynear],0.05);
cmbarraytemp.ycoef=cmbcoefdbl(1)*cmbarray1(varnum).ycoef+cmbcoefdbl(2)*cmbarray1(i).ycoef;
else
cmbcoefdbl=regress(Yorig,[ones(checknum,1),cmbarray1(i).ynear,cmbarray1(j).ynear],0.05);
cmbarraytemp.ycoef=cmbcoefdbl(1)*cmbarray1(varnum).ycoef+cmbcoefdbl(2)*cmbarray1(i).ycoef+cmbcoefdbl(3)*cmbarray1(j).ycoef;
end
%計算新的變量和誤差
cmbarraytemp.ynear=Xcheck*(cmbarraytemp.ycoef);
cmbarraytemp.yerror=mean(abs(Ycheck-cmbarraytemp.ynear)./Ycheck);
positerr=max([cmbarray2.yerror]);
cmbarraytemp.ynear=Xorig*(cmbarraytemp.ycoef);
if cmbarraytemp.yerror<positerr
posit=(find([cmbarray2.yerror]==positerr));
cmbarray2(posit(1)).ynear=cmbarraytemp.ynear;
cmbarray2(posit(1)).yerror=cmbarraytemp.yerror;
cmbarray2(posit(1)).ycoef=cmbarraytemp.ycoef;
      end
  end
end
%重新設置停止標志
simblestop=min([cmbarray1.yerror])-min([cmbarray2.yerror]);
cmbarrayl=cmbarray2;
end
%在本次預留變量的數目下,最佳的擬合
positerr=min([cmbarray2.yerror]);
posit=(find([cmbarray2.yerror]==positerr));
cmbarrayselt(contcoef).ynear=cmbarray2(posit(1)).ynear;
cmbarrayselt(contcoef).yerror=cmbarray2(posit(1)).yerror;
cmbarrayselt(contcoef).ycoef=cmbarray2(posit(1)).yeoef;
%找出誤差最小:局部最小誤差errorlocal;全局最小誤差errorwhole
positerr=min([cmbarrayselt.yerror]);
posit=(find([cmbarrayselt.yerror]==positerr));
cmbarraytemp=cmbarrayselt(posit(1));
errrorlocal=cmbarraytemp.yeorrr;
errorwhole=mean(abs(Y-X*cmbarraytemp.ycoef)./Y);
%輸出最優(yōu)擬合結果結果
disp(''),dip(''),disp(''),disP('')
disp('***********************************************************************')
disp('*****************************?執(zhí)行的結果********************************'),disp(''),disp('')
disp('可取得最優(yōu)擬合時的總體誤差:')
disp([blnaks(15),'The global error:',num2str(errorwhole)])
disp('取得最優(yōu)擬合時的當時誤差:')
disp([blanks(15),'The local error:',num2str(errorlocal)]),disp('')
disp('取得最優(yōu)擬合時的最佳擬合表達式:')
coefoutval=cmbanaytemp.ycoef;
for i=1:varnum 
    coefoutstr{i}=num2str(coefoutval(i));
end
disp([blanks(10),'Y=','(',coefoutstr{i},')*Xl']),
for i=2:varnum-1
disp([blanks(15),'+(',coefoutstr{i},')*X',int2str(i)])
end
disp([blanks(15),'+(',coefoutstr{i+1}])
disp(''),disp('')
%將最后的Y值存入Y數組中,以便進行比較
Y(:,2)=X(:,1:varnum-l)*coefoutval(1:varnum-l,l)+coefoutval(varnum);
Xcopy=X;
Y(:,3)=Y(:,1)-sum(Y(:,l))/Xsize(l);
X(Xsize(1)+1,:)=sum(X)./Xsize(1);
for i=l:Xsize(1)
X(i,:)=X(i,:)-X(Xsize(l)+1,:);
end
%%%計算絕對誤差%%%
disp([blanks(15),'']),The_global_error=sum((Y(:,l)-Y(:,2)).^2)
disp(''),The_model_error=sum((Y(1:checknum,1)-Y(1:checknum,2)).^2)
%%%
%計算F和R2檢驗
TSS=sum(Y(:,3).^2);
ESS=coefoutval(1:varnum-1,1)'*(Y(:,3)'*X(1:end-1,1:varnum-1))';
Rsqr=ESS/TSS;
Xcopyl=Xcopy;
Y(l:checknum,4)=Y(1:checknum,1)-sum(Y(l:checknum,l))/checknum;
Xcopy(Xsize(1)+2,:)=sum(Xcopy(1:checknum,:))./cheeknum;
for i=1:checknum
Xcopy(i,:)=Xcopy(i,:)-Xcopy(Xsize(1)+2,:);
end
TSS1=sum(Y(1:checknum,4).^2);
ESS1=coefoutval(l:varnum-1,1)'*(Y(l:checknum,4)'*Xcopy(1:checknum,1:varnum-l))';
Rsqrmodel=ESS1/TSS1;
%%%%%%%計算有效的變量
%fit少um二sum((abs(coeofutval(1:end一1))>le一50));
%F=(Rsq/rfit_num)/((l一Rsqr)/(Xsize(l)一fi--ntum一1)):
%%%%%%%
F=(Rsqrmodel/(varnum-1))/((l-Rsqrmodel)/(checknum-varnum));
%
delta=F(Y(l:checknum,l)'*Y(1:checknum,1)-coefoutval(l:varnum,1)'*Xcopyl(l:checknum,l:varnum)'*Y(l:checknum,1))/(checknum-varnum);
varCov=deltaF*inv(Xcopyl(l:checknum,1:varnum)'*Xcopyl(l:checknum,1:varnum));
arrayT=coefoutval(1:varnum,1)./sqrt(abs(diag(varCov)));
disp('<<<<<<<<<<<<<<<<<<<<R方檢驗>>>>>>>>>>>>>>>>>>>>>>'),Rsqr
disp(''),Rsqrmodel
disp('<<<<<<<<<<<<<<<<<<<<<F檢驗>>>>>>>>>>>>>>>>>>>>>>'),F
disp('<<<<<<<<<<<<<<<<<<<<<t檢驗>>>>>>>>>>>>>>>>>>>>>>'),arryaT'
disp(''),disp(''),
disP('*****************************執(zhí)行的結果********************************')
disP('************************************************************************')
disP(''),disp('')

end


聯系:highspeedlogic

QQ :1224848052

微信:HuangL1121

郵箱:1224848052@qq.com

網站:http://www.mat7lab.com/

網站:http://www.hslogic.com/

微信掃一掃:

Copyright 2017-2025 © 嘉興麥特萊博軟件開發(fā)工作室
  • 網站備案號:浙ICP備18008591號-1