function [T,NI] = LTSA(data,d,K,NI)
[m,N] = size(data); % m是输入样本点的维数. N是输入样本个数
% Step 0: Neighborhood Index
if nargin<4 %如果输入参数个数<4
if length(K)==1 %向量K的长度
K = repmat(K,[1,N]); %矩阵K的内容堆叠在[1*N]的矩阵上
end;
NI = cell(1,N); %产生一个1*N的空单元数组
if m>N
a = sum(data.*data); % .* 用于矩阵中对应元素的相乘,并且竖向相加
dist2 = sqrt(repmat(a',[1 N]) + repmat(a,[N 1]) - 2*(data'*data)); %计算距离
for i=1:N
% Determine ki nearest neighbors of x_j
[dist_sort,J] = sort(dist2(:,i)); %sort 对dist2 进行排序,dist_sort 返回对每列排序后的结果
%J返回的是排序后矩阵中每个数在矩阵未排序前每列中的位置
Ii = J(1:K(i)); %i个近邻点
NI{i} = Ii; %放进单元数组N中
end;
else % m<=N
for i=1:N
% Determine ki nearest neighbors of x_j
LTSA的Matlab版本代码详解
最新推荐文章于 2023-03-05 09:50:50 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)