Matlab | 找出数组/向量中的重复项的索引
一、问题描述
输入一个数组,里面含有重复项,想要将其重复的项的序号指示出来。
二、问题分析
unique()函数可以去除数组的重复项,并且返回索引。我们可以利用这个返回的索引,进而找出原数组中重复出现的位置。
三、代码
贴了两份代码,第一份输出形式数组,第二份输出形式是元胞。
clear;clc;close;% 输入:一个有小到大排列的,有序的,含有重复项的数组;
% 输出:数组的重复项的序号,每组重复项之间用0分隔开;clear;clc;close;% 输入:一个有小到大排列的,有序的,含有重复项的数组;
% 输出:数组的重复项的序号,每组重复项之间用0分隔开;% TimeDelaySort = [1,1,1,2,4,4,9]; % 1、2、3;5、6;项重复
TimeDelaySort = [1.01,1.01,1.011,2.5,2.8,2.8,4.33,4.33,9]; % 1、2;5、6;7、8;项重复[TimeDelaySortUni,IndexTimeA] = unique(TimeDelaySort,'stable'); % IndexTimeA返回索引
N_baseUni = length(TimeDelaySortUni);RepeatItem = 0; % 第一个数0,是无效的,为了索引
for ii = 2:N_baseUni % 找到重复项if IndexTimeA(ii) - IndexTimeA(ii-1) > 1NowRepeatItem = [0,IndexTimeA(ii-1):(IndexTimeA(ii)-1)];RepeatItem = [RepeatItem,NowRepeatItem];end
enddisp('向量重复项出现于')
disp(RepeatItem(2:end));
clear;clc;close;% 输入:一个有小到大排列的,有序的,含有重复项的数组;
% 输出:一个元胞,里面是重复的项;TimeDelaySort = [1,1,1,2,4,4,9]; % 1、2、3;5、6;项重复
% TimeDelaySort = [1.01,1.01,1.011,2.5,2.8,2.8,4.33,4.33,9]; % 1、2;5、6;7、8;项重复[TimeDelaySortUni,IndexTimeA] = unique(TimeDelaySort,'stable'); % IndexTimeA返回索引
N_baseUni = length(TimeDelaySortUni);aa = 0;
for ii = 2:N_baseUni % 找到重复项if IndexTimeA(ii) - IndexTimeA(ii-1) > 1aa = aa + 1;RepeatItem{aa} = [IndexTimeA(ii-1):(IndexTimeA(ii)-1)];end
enddisp('向量重复项出现于')
for ii = 1:aadisp(RepeatItem{ii});
end
四、运行结果
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
