该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
clc
clear
load('test.txt')
Z=test;
psize=size(Z);
m=psize(2);
n=psize(1);
l=ones(m,m);
for i=1:m
y(i)=0;
for j=1:n
y(i)=y(i)+Z(j,i);
end
y(i)=y(i)/n; %样本均值
endfor i=1:m
s(i)=0;
for k=1:n
s(i)=s(i)+(Z(k,i)-y(i))*(Z(k,i)-y(i));
end
s(i)=sqrt(s(i)/(n-1)); %样本标准差
endfor i=1:m
for j=1:n
XX(j,i)=(Z(j,i)-y(i))/s(i); %标准化处理
end
endx=XX;
percent=0.98; %KPCA中特征值的提取效率
d=0.98; %特征值成分的提取比重
var=287;
sign=1; %采用gauss核
tic
[eigenvalue,kernelmatrix,eigenvectors,project_invectors,le,leiji,t]=kpca(x,percent,var,sign); %未对样本进行筛选的KPCA
disp('KPCA所用时间');
toc
groupnumber=2; %样本分组的组数
tic
l=floor(psize(1)/groupnumber); %重采样进行重新分组
i=2;
k(1)=1;
while i<=groupnumber+1
k(i)=(i-1)*l;
i=i+1;
if i*l>psize;
k(i)=psize(1);
break;
end
end
xx=x(k(1):k(2),:);
[eigenvalue,kl,eigenvectors,akpcaproject_invectors,le,leiji,t]=kpca(xx,percent,var,sign); %先对第一组处理
if t==1
sume=abs(eigenvectors(:,1));
else
sume=abs(eigenvectors(:,1))+abs(eigenvectors(:,2));
end
[value,getnumber,restdata]=shaixuan(xx,sume,d); %对样本进行筛选
ter_xx=restdata; %记录获取的新样本数据
pvalue=value; %记录获取的样本编号
newdatanumber=getnumber;%记录获取的样本数目
%pvalue
for j=2:groupnumber %对每一小组样本执行KPCA,并对样本进行筛选
xx=x(k(j)+1:k(j+1),:);
[eigenvalue,kl,eigenvectors,akpcaproject_invectors,le,leiji,t]=kpca(xx,percent,var,sign);
if t==1
sume=abs(eigenvectors(:,1));
else
sume=abs(eigenvectors(:,1))+abs(eigenvectors(:,2));
end
[value,getnumber,restdata]=shaixuan(xx,sume,d); %对样本进行筛选
ter_xx=[ter_xx;restdata];
for ii=1:getnumber
value(ii)=value(ii)+k(j);
end
由于是小白,直接照抄的别人代码,但是shaixuan显示未定义,知道这里有问题,但是不知道怎么改,求教各位。谢谢。