LTSA 改进版本,和经典LTSA类似

function Y = iterative_LTSA(data,d,K,max_iterate_time,errors)
[D,N] = size(data);  % D是输入样本点的维数. N是输入样本个数
indexs=zeros(N,K);

% Step 0:  Neighborhood Index(k-d method)
%if nargin<4                   %如果输入参数个数<4

    NI = cell(1,N);            %产生一个1*N的空单元数组
    if D>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返回的是排序后矩阵中每个数在矩阵未排序前每列中的位置(即索引值)
            indexs(i,:)=J(1:K);
            Ii = J(1:K);             %i个近邻点
            NI{i} = Ii;                 %放进单元数组N中
        end;
    else                                %   m<=N
        for i=1:N
            % Determine ki nearest nei
  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值