Matlab数据统计和分析h函数算法程序集.docx
- 文档编号:2569160
- 上传时间:2023-05-04
- 格式:DOCX
- 页数:23
- 大小:17.72KB
Matlab数据统计和分析h函数算法程序集.docx
《Matlab数据统计和分析h函数算法程序集.docx》由会员分享,可在线阅读,更多相关《Matlab数据统计和分析h函数算法程序集.docx(23页珍藏版)》请在冰点文库上搜索。
Matlab数据统计和分析h函数算法程序集
Matlab数据统计和分析算法程序集
1.AccordAnalysis
SumX=sum(sum(X));
fori=1:
N
forj=1:
n
z(i,j)=(X(i,j)-sqrt(meanLX(i)*meanLC(j)))/SumX;
end
end
A=z*transpose(z);
[zA,m,lamda,U]=MainAnalysis(A);
V=transpose(U);
fori=1:
n
forj=1:
m
F(i,j)=U(i,j)*sqrt(lamda(j));
G(i,j)=V(i,j)*sqrt(lamda(j));
end
End
2.BackReg
functionVar=BackReg(X,Y,alpha)
formatlong;
sz=size(X);
N=sz
(1);
n=sz
(2);
Varin=X;
VarLeft=zeros(n,1);
VarAdd=1:
n;
VarInnum=n;
fori=1:
n
[RegCoff,R,F,FX,TX]=MultiLineReg(Varin(:
1:
VarInnum),Y);
[minFX,Vindex]=min(FX);
ifminFX<=fcdf(alpha,1,N-i-n)
ifVindex==VarAdd
(1)
VarAdd(1:
VarInnum-1)=VarAdd(2:
VarInnum);
Varin(:
1:
VarInnum-1)=Varin(:
2:
VarInnum);
VarInnum=VarInnum-1;
else
ifVindex==VarAdd(VarInnum)
VarInnum=VarInnum-1;
else
VarAdd(Vindex:
VarInnum-1)=VarAdd(Vindex:
VarInnum);
Varin(:
Vindex:
VarInnum-1)=Varin(:
Vindex:
VarInnum);
VarInnum=VarInnum-1;
end
end
else
break;
end
end
Var=VarAdd;
formatshort;
3.CollectAnaly
functionCollectAnaly(X)
formatlong;
sz=size(X);
N=sz
(1);%样本个数
n=sz
(2);
D=zeros(n,n);
totalClass=N;
RecordClass=zeros(N,N+1);
RecordClass(:
1)=ones(N,1);
RecordClass(:
2)=1:
N;
disp('聚类前的N个类:
');
disp(RecordClass);
whiletotalClass>1
minClaDist=inf;
fori=1:
totalClass
forj=i+1:
totalClass
distClass=DistClass(X,RecordClass,i,j,RecordClass(i,1),RecordClass(j,1));
ifdistClass minClaDist=distClass; i1=i; j1=j; end end end t1=RecordClass(i1,1); t2=RecordClass(j1,1); RecordClass(i1,(t1+2): (t1+t2+1))=RecordClass(j1,2: (t2+1)); RecordClass(i1,1)=RecordClass(i1,1)+RecordClass(j1,1); RecordClass(j1: (totalClass-1),: )=RecordClass((j1+1): totalClass,: ); RecordClass(totalClass: N,: )=zeros(N-totalClass+1,N+1); totalClass=totalClass-1; str1=strcat('第',num2str(N-totalClass)); str1=strcat(str1,'次聚类,'); str1=strcat(str1,'第'); str1=strcat(str1,num2str(i1)); str1=strcat(str1,'类和第'); str1=strcat(str1,num2str(j1)); str1=strcat(str1,'类合并: '); disp(str1); disp(RecordClass(1: totalClass,: )) end functiond=DistSamp(X1,X2) formatlong; d=sqrt(dot(X1-X2,X1-X2)); formatshort; functiond=DistClass(X,C1,l1,l2,n,m) formatlong; d=inf; fori=1: n forj=1: m dc=DistSamp(X(C1(l1,i+1),: ),X(C1(l2,j+1),: )); ifdc d=dc; end end end formatshort; 4.CompPoly2Reg function[RegCoff,R,F,FX,TX]=CompPoly2Reg(X,Y) formatlong; sz=size(X); N=sz (1); n=sz (2); XX=zeros(N,n); XX(: 1)=X(: 1); XX(: 4)=X(: 2); fori=1: N XX(i,2)=X(i,1)^2; XX(i,3)=X(i,1)*X(i,2); XX(i,5)=X(i,2)^2; end RegCoff=zeros(6,1); Z=mean(XX); yp=mean(Y); A=transpose(XX)*XX-N*transpose(Z)*Z; C=transpose(XX)*Y-N*transpose(Z)*yp; RegCoff(2: 6)=A\C; RegCoff (1)=yp-Z*RegCoff(2: 6); S=norm(Y)^2-N*yp^2; YR=XX*RegCoff(2: 6)+RegCoff (1)*ones(N,1); U=transpose(RegCoff(2: 6))*C; Q=S-U; R=sqrt(U/S); UR=U/n; QR=Q/(N-6); s=sqrt(QR); inA=inv(A); F=UR/QR; fori=1: length(RegCoff)-1 FX(i)=RegCoff(i+1)^2/inA(i,i)/QR; TX(i)=RegCoff(i+1)/sqrt(inA(i,i))/s; end formatshort; 5.DistgshAnalysis functionkindX=DistgshAnalysis(XA,XB,SampX) formatlong; sz1=size(XA); sz2=size(XB); M=sz1 (1);%样本个数 N=sz2 (1); n=sz1 (2); meanXA=mean(XA); meanXB=mean(XB); sx=zeros(n,n); Y=zeros(N,n); fori=1: n forj=1: n sx(i,j)=dot(XA(: i)-meanXA(i)*zeros(M,1),XA(: j)-meanXA(j)*zeros(M,1))+... dot(XB(: i)-meanXB(i)*zeros(N,1),XB(: j)-meanXB(j)*zeros(N,1)); end end d=transpose(meanXA-meanXB); c=sx\d; YA=dot(c,meanXA); YB=dot(c,meanXB); Yc=(M*YA+N*YB)/(M+N); Y0=dot(c,SampX); ifYA>YB ifY0>Yc kindX=1; disp('样品属于第一类'); else ifY0==Yc kindXp=0; disp('没法判断'); else kindX=2; disp('样品属于第二类'); end end else ifYA ifY0>Yc kindX=2; disp('样品属于第二类'); else ifY0==Yc kindX=0; disp('没法判断'); else kindX=1; disp('样品属于第一类'); end end else disp('没法判断'); end end 6.ForwardReg functionVar=ForwardReg() formatlong; alpha=0.05; X=[250050 130011 150030 160021 110021 170030 130011 100060 120041 110030 200011 250050 100021 140011 250041 150031 160030 120031 280021 180011 260041 180041 120031 170020 240020 160041 160031 240040 230020 230010 270031 180010 270021 220040 180020 210030 150011 80041 200030 250031 280030 150010 200031 220010 100030 130041 110041 270020 160030 180041 120030 230020 130040 250021 210040 280010 180031 140010 120040 270030 100040 270021 220020 300021 110030 200020 140020 310021 120020 290011 240040 290020 90041 140040 160020 260031 180030 300021 160010 140030 140020 120030 300011 240010 190030 130020 280021 230020 200010 190031 ]; Y=[2500 1500 1100 2000 1400 1500 1100 1000 1400 1100 1700 1800 1400 1500 2200 1600 1300 1000 2600 1400 2800 2100 1300 1500 2200 1900 1700 2600 2100 2000 2800 1500 2500 2500 1700 2100 1100 1100 2000 2500 2800 1200 2100 1900 1000 1600 1300 2500 1600 2000 1300 2200 1500 2300 2300 2400 1900 1100 1400 2800 1300 2600 2000 2900 1100 1800 1200 2900 1000 2500 2600 2700 1100 1700 1500 2600 1800 2800 1300 1500 1200 1200 2700 2100 2000 1200 2700 2200 1700 2000 ]; sz=size(X); N=sz (1); n=sz (2); Varin=zeros(N,n); VarLeft=1: n; VarAdd=zeros(n,1); Varleftnum=n; fori=1: n maxFX=0; forj=1: Varleftnum XNew=[Varin(: 1: (n-Varleftnum));X(: VarLeft(j))]; [Rc,R,F,FX,TX]=LineReg(XNew,Y); newFx=TX(length(FX)); ifabs(newFx)>maxFX maxFX=abs(newFx); Vindex=VarLeft(j); end end ifmaxFX>=tinv(1-alpha/2,N-i-1) ifVindex==VarLeft (1) VarLeft(1: Varleftnum-1)=VarLeft(2: Varleftnum); Varleftnum=Varleftnum-1; else ifVindex==VarLeft(Varleftnum) Varleftnum=Varleftnum-1; else VarLeft(Vindex: Varleftnum-1)=VarLeft(Vindex: Varleftnum); Varleftnum=Varleftnum-1; end end Varin(: i)=X(: Vindex); VarAdd(i)=Vindex; else break; end end Var=VarAdd; formatshort; 7.LineReg function[RegCoff,R,F,FX,TX]=LineReg(X,Y) %自变量样本矩阵: X %因变量样本矩阵: Y %线性回归系数: RegCoff %复相关系数: R %方程显著性检验F值: F %各因自显著性检验F值: FX %各因子显著性检验t值: TX formatlong; n=length(Y); Z=[ones(n,1)X]; A=inv(transpose(Z)*Z); RegCoff=A*transpose(Z)*Y; yp=mean(Y); S=norm(Y)^2-2*yp*yp*n+n*yp^2; YR=Z*RegCoff; U=norm(YR)^2-2*yp*sum(YR)+n*yp^2; Q=S-U; R=sqrt(U/S); UR=U/(length(RegCoff)-1); QR=Q/(n-length(RegCoff)); s=sqrt(QR); F=UR/QR; fori=1: length(RegCoff)-1 FX(i)=RegCoff(i+1)^2/A(i,i)/QR; TX(i)=RegCoff(i+1)/sqrt(A(i,i))/sqrt(QR); end formatshort; RegCoff, R F FX TX 8.MainAnalysis function[Z,m,lamda,U]=MainAnalysis(X) formatlong; sz=size(X); N=sz (1);%样本个数 n=sz (2); meanX=mean(X); sx=zeros(n,1); Y=zeros(N,n); fori=1: n sx(i)=sqrt(dot(X(1: N,i)-meanX(i)*ones(N,1),X(1: N,i)-meanX(i)*ones(N,1)))/sqrt(N-1); end forj=1: n Y(: j)=(X(: j)-meanX(j)*ones(N,1))/sx(j); end fori=1: n forj=1: n r(i,j)=dot(Y(: i),Y(: j))/(N-1); end end [v,e]=eig(r); [sortE,turnV]=sort(diag(e),'descend'); Esum=sortE (1); Tr=sum(diag(r)); m=1; while1 ifEsum/Tr>0.85 break; else m=m+1; Esum=Esum+sortE(m); end end lamda=sortE(1: m); fori=1: m U(: i)=v(: turnV(i)); Z(: i)=Y*v(: turnV(i)); end formatshort; 9.MultilineReg function[RegCoff,R,F,FX,TX]=MultiLineReg(X,Y) formatlong; sz=size(X); N=sz (1); n=sz (2); RegCoff=zeros(n+1,1); Z=mean(X); yp=mean(Y); A=transpose(X)*X-N*transpose(Z)*Z; C=transpose(X)*Y-N*transpose(Z)*yp; RegCoff(2: n+1)=A\C; RegCoff (1)=yp-Z*RegCoff(2: n+1); S=norm(Y)^2-N*yp^2; YR=X*RegCoff(2: n+1)+RegCoff (1)*ones(N,1); U=transpose(RegCoff(2: n+1))*C; Q=S-U; R=sqrt(U/S); UR=U/n; QR=Q/(N-n-1); s=sqrt(QR); inA=inv(A); F=UR/QR; fori=1: length(RegCoff)-1 FX(i)=RegCoff(i+1)^2/inA(i,i)/QR; TX(i)=RegCoff(i+1)/sqrt(inA(i,i))/s; end formatshort; 10.PeakReg function[RegCoff,R,F,FX,TX]=PeakReg(X,Y,k) formatlong; sz=size(X); N=sz (1); n=sz (2); XX=[ones(N,1)X]; RegCoff=inv(transpose(XX)*XX+k*eye(N,N))*transpose(XX)*Y; Z=mean(X); yp=mean(Y); S=norm(Y)^2-N*yp^2; YR=X*RegCoff(2: n+1)+RegCoff (1)*ones(N,1); U=transpose(RegCoff(2: n+1))*C; Q=S-U; R=sqrt(U/S); UR=U/n; QR=Q/(N-n-1); s=sqrt(QR); inA=inv(A); F=UR/QR; fori=1: length(RegCoff)-1 FX(i)=RegCoff(i+1)^2/inA(i,i)/QR; TX(i)=RegCoff(i+1)/sqrt(inA(i,i))/s; end formatshort; 11.ZYFG functionkc=ZYFG(X,k) formatlong; n=length(X); kc=zeros(k,1); kc(k)=n; fors=1: k-1 minD=inf; fori=k-s+1: kc(k) Dc=Dg(X,1,i-1)+Dg(X,i,kc(k-s+1)); ifDc minD=Dc; kc(k-s)=i-1; end end end formatshort; functionDiameter=Dg(X,i,j) formatlong; meanX=sum(X(i: j))/(j-i+1); Diameter=dot(X(i: j)-meanX*ones(size(X(i: j))),X(i: j)-meanX*ones(size(X(i: j)))); 12.PolyReg function[RegCoff,R,F,FX,TX]=PolyReg(X,Y,n) formatlong; sz=size(X); N=sz (1); XX=zeros(N,n); fori=1: N forj=1: n XX(i,j)=X(i)^j; end end RegCoff=zeros(n+1,1); Z=mean(XX); yp=mean(Y); A=transpose(XX)*XX-N*transpose(Z)*Z; C=transpose(XX)*Y-N*transpose(Z)*yp; RegCoff(2: n+1)=A\C; RegCoff (1)=yp-Z*RegCoff(2: n+1); S=norm(Y)^2-N*yp^2; YR=XX*RegCoff(2: n+1)+RegCoff (1)*ones(N,1); U=transpose(RegCoff(2: n+1))*C; Q=S-U; R=sqrt(U/S); UR=U/n; QR=Q/(N-n-1); s=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Matlab 数据 统计 分析 函数 算法 程序