LLE
算法代码
%LLEALGORITHM(usingKnearestneighbors)
%
%[Y]=lle(X,K,dmax)
%
%X=dataasDxNmatrix(D=dimensionality,N=#points)
%(D=
点的维数
,N=
点数
)
%K=numberofneighbors(
领域点的个数
)
%dmax=maxembeddingdimensionality(
最大嵌入维数
)
%Y=embeddingasdmaxxNmatrix
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%
function[Y]=lle(X,K,d)
[D,N]=size(X);
%D
是矩阵的行数,
N
是矩阵的列数
fprintf(1,'LLErunningon%dpointsin%ddimensions\n',N,D);
%STEP1:COMPUTEPAIRWISEDISTANCES&FINDNEIGHBORS
%
寻找邻居数据点
fprintf(1,'-->Finding%dnearestneighbours.\n',K);
X2=sum(X.^2,1);
%
矩阵
X
中的每个元素以
2
为指数求幂值,并且竖向相加
%iftwopointX=(x1,x2),Y=(y1,y2)
%thanthedistancebetweenXandYissqtr((x1-y1).^2+(x2-y2).^2)
distance=repmat(X2,N,1)+repmat(X2',1,N)-2*X'*X;
%repmat
就是在行方向把
X2
复制成
N
份
,
列方向为
1
份