一、问题描述
输入一个数组,里面含有重复项,想要将其重复的项的序号指示出来。
二、问题分析
unique()函数可以去除数组的重复项,并且返回索引。我们可以利用这个返回的索引,进而找出原数组中重复出现的位置。文章来源:https://www.toymoban.com/news/detail-503084.html
三、代码
贴了两份代码,第一份输出形式数组,第二份输出形式是元胞。文章来源地址https://www.toymoban.com/news/detail-503084.html
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) > 1
NowRepeatItem = [0,IndexTimeA(ii-1):(IndexTimeA(ii)-1)];
RepeatItem = [RepeatItem,NowRepeatItem];
end
end
disp('向量重复项出现于')
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) > 1
aa = aa + 1;
RepeatItem{aa} = [IndexTimeA(ii-1):(IndexTimeA(ii)-1)];
end
end
disp('向量重复项出现于')
for ii = 1:aa
disp(RepeatItem{ii});
end
四、运行结果
到了这里,关于Matlab | 找出数组/向量中的重复项的索引的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!