LTSA的Matlab版本代码详解

该博客详细介绍了LTSA(局部线性嵌入)算法的Matlab代码实现,包括邻居搜索、局部信息计算、特征向量提取等关键步骤,旨在帮助读者理解数据降维的过程。
摘要由CSDN通过智能技术生成
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
        
  • 3
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值