• Matlab | 找出数组/向量中的重复项的索引


    一、问题描述

    输入一个数组,里面含有重复项,想要将其重复的项的序号指示出来。

    二、问题分析

    unique()函数可以去除数组的重复项,并且返回索引。我们可以利用这个返回的索引,进而找出原数组中重复出现的位置。

    三、代码

    贴了两份代码,第一份输出形式数组,第二份输出形式是元胞。

    clear;clc;close;
    
    % 输入:一个有小到大排列的,有序的,含有重复项的数组;
    % 输出:数组的重复项的序号,每组重复项之间用0分隔开;
    
    clear;clc;close;
    
    % 输入:一个有小到大排列的,有序的,含有重复项的数组;
    % 输出:数组的重复项的序号,每组重复项之间用0分隔开;
    
    % TimeDelaySort = [1,1,1,2,4,4,9]; % 12356;项重复
    TimeDelaySort = [1.01,1.01,1.011,2.5,2.8,2.8,4.33,4.33,9]; % 125678;项重复
    
    [TimeDelaySortUni,IndexTimeA] = unique(TimeDelaySort,'stable'); % IndexTimeA返回索引
    N_baseUni = length(TimeDelaySortUni);
    
    RepeatItem = 0; % 第一个数0,是无效的,为了索引
    for ii = 2:N_baseUni % 找到重复项
        if IndexTimeA(ii) - IndexTimeA(ii-1) > 1
            NowRepeatItem = [0,IndexTimeA(ii-1):(IndexTimeA(ii)-1)];
            RepeatItem = [RepeatItem,NowRepeatItem];
        end
    end
    
    disp('向量重复项出现于')
    disp(RepeatItem(2:end));
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    clear;clc;close;
    
    % 输入:一个有小到大排列的,有序的,含有重复项的数组;
    % 输出:一个元胞,里面是重复的项;
    
    TimeDelaySort = [1,1,1,2,4,4,9]; % 12356;项重复
    % TimeDelaySort = [1.01,1.01,1.011,2.5,2.8,2.8,4.33,4.33,9]; % 125678;项重复
    
    [TimeDelaySortUni,IndexTimeA] = unique(TimeDelaySort,'stable'); % IndexTimeA返回索引
    N_baseUni = length(TimeDelaySortUni);
    
    aa = 0;
    for ii = 2:N_baseUni % 找到重复项
        if IndexTimeA(ii) - IndexTimeA(ii-1) > 1
            aa = aa + 1;
            RepeatItem{aa} = [IndexTimeA(ii-1):(IndexTimeA(ii)-1)];
        end
    end
    
    disp('向量重复项出现于')
    for ii = 1:aa
        disp(RepeatItem{ii});
    end
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    四、运行结果

  • 相关阅读:
    Springboot 项目启动时扫描所有枚举并存入缓存(redis)
    独立站联盟营销引流大法
    java计算机毕业设计基于安卓Android/微信小程序的英语单词学习APP系统
    《Java 编写基于 Netty 的 RPC 框架》
    maven
    「架构师合集」
    Bean实例化的三级缓存
    连接SQL Server 数据库
    Oracle面试题整理
    面试前必须了解的7 种架构设计模式(译文)
  • 原文地址:https://blog.csdn.net/qq_43466146/article/details/126819521