欢迎来到天天文库
浏览记录
ID:51340502
大小:68.00 KB
页数:3页
时间:2020-03-22
《主成分分析源代码).doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、1.functiony二pca(mixedsig)2.2.%程序说明:y=pca(mixedsig),程序中mixedsig为n*T阶混合数据矩阵,n为信号个数,T为采样点数3.%y为m*T阶主分量矩阵。4.%n是维数,T是样本数。&7.ifnargin==08.error(5Youmustsupplythemixeddataasinputargument.');9.end10.iflength(size(mixedsig))>211.error(?Inputdatacannothavemorethantwocl
2、imensions.');12.end13.ifany(any(isnan(mixedsig)))14.error(*InputdatacontainsNaN''s.');15.end16.16.%去均值17.meanValue=mean(mixedsig')';18.[m,n]=size(mixedsig);19.%mixedsig=mixedsig-meanWduc*ones(1,size(meanValuc));%当数据木身维数很大时容易出现Outofmemory20.fors=1:m21.fort=l:n
3、22.mixedsig(s,t)=mixedsig(s,t)-meanValue(s);23.end24.end25.[Dim,NumofSampl]=size(mixedsig);26.oldDimension=Dim;27.fprintf('Numberofsignals:%d',Dim);28.fprintf('Numberofsamples:%d',NumofSampl);29.fprintfCCalculatePCA..・’);30.firstEig=1;31.lastEig=Dim;32.co
4、varianceMatrix=corrcoef(mixedsig*);%计算协方差矩阵33.[E,D]=eig(covarianceMatrix);%计算协方羌矩阵的特征值和特征向量35.34.%计算协方差矩阵的特征值大于阈值的个数lastEig35.kToleranee=1;36.%maxLastEig=sum(diag(D)>=rankToleranee);37.%lastEig=maxLastEig;38.lastEig=10;41.%降序排列特征值eigenvalues二f1ipud(sort(diag(
5、D)));%去掉较小的特征值iflastEiglowerLimitValue;%去掉较大的特征值(一般没冇这一步)iffirstEig>1higherLimitValue二(eigenvalues(firstEig-1)
6、+eigenvalues(first,Eig))/2;elsehigherLimitValue=eigenvalues(1)+1;endhigherColumns=diag(D)7、ero)eigenvalue[%g],eigenvalues(lastEig));fprintf(*Largestremaining(non-zero)eigenvalue[%g]',eigenvalues(firstEig));fprintf(*Sumofremovedeigenvalue[%g]',sum(diag(D).*(^selectedColumns)));%选择相应的特征值和特征向量E=selcol(E,selectedColumns);D=selcol(selcol(D,selecte8、dColumns)',selectedColumns);%计算白化矩阵whiteningMatrix二inv(sqrt(D))*E';dewhiteningMatrix=E*sqrt(D);%提取主分量y=whiteningMatrix*mixedsig;%行选择子稈序functiontrix二seicol(oldMatrix,maskVector)ifsize(mask
7、ero)eigenvalue[%g],eigenvalues(lastEig));fprintf(*Largestremaining(non-zero)eigenvalue[%g]',eigenvalues(firstEig));fprintf(*Sumofremovedeigenvalue[%g]',sum(diag(D).*(^selectedColumns)));%选择相应的特征值和特征向量E=selcol(E,selectedColumns);D=selcol(selcol(D,selecte
8、dColumns)',selectedColumns);%计算白化矩阵whiteningMatrix二inv(sqrt(D))*E';dewhiteningMatrix=E*sqrt(D);%提取主分量y=whiteningMatrix*mixedsig;%行选择子稈序functiontrix二seicol(oldMatrix,maskVector)ifsize(mask
此文档下载收益归作者所有