【Matlab笔记_17】查找数组中相同元素

案例一:找到数组中相同元素所在位置索引

方法:使用unique函数用于找到唯一的元素和它们在原数组中的索引。然后,histc函数用于计算每个唯一元素的出现次数,并通过ismember函数找到重复元素在原数组中的索引。最后,通过find函数找到包含重复元素的索引

复制代码
% 创建一个包含重复内容的数组
myArray = [1, 2, 3, 4, 2, 5, 6, 1];

% 使用unique函数查找唯一的元素和它们的索引
[uniqueElements, ~, indexInUnique] = unique(myArray);

% 使用ismember函数找到重复元素在原数组中的索引
duplicateIndices = find(ismember(indexInUnique, find(histc(indexInUnique, 1:numel(uniqueElements)) > 1)));

% 显示结果
if isempty(duplicateIndices)
    disp('数组没有重复的元素。');
else
    disp('数组包含重复的元素。');
    disp('重复元素的索引是:');
    disp(duplicateIndices);
end

案例二:找到相同元素第一次出现的索引

方法:对案例一进行稍微修改,使用accumarray函数用于在每个唯一元素的索引位置上存储第一次出现的索引。然后,通过histc函数找到重复元素,并使用这些索引找到相同元素第一次出现的位置。

复制代码
% 创建一个包含重复内容的数组
myArray = [1, 2, 3, 4, 2, 5, 6, 1];

% 使用unique函数查找唯一的元素和它们的索引
[uniqueElements, ~, indexInUnique] = unique(myArray);

% 使用accumarray函数找到每个元素第一次出现的索引
First_idx= accumarray(indexInUnique(:), (1:numel(myArray)).', [], @min);

% 找到重复元素的索引
result= First_idx(histc(indexInUnique, 1:numel(uniqueElements)) > 1);

% 显示结果
if isempty(result)
    disp('数组没有重复的元素。');
else
    disp('数组包含重复的元素。');
    disp('重复元素第一次出现的索引是:');
    disp(result);
end
相关推荐
雍凉明月夜5 分钟前
视觉opencv学习笔记Ⅳ
笔记·opencv·学习·计算机视觉
断剑zou天涯8 分钟前
【算法笔记】KMP算法
java·笔记·算法
程序员东岸9 分钟前
《数据结构——排序(下)》分治与超越:快排、归并与计数排序的终极对决
数据结构·c++·经验分享·笔记·学习·算法·排序算法
科技与数码29 分钟前
国产MATLAB替代软件的关键能力与生态发展现状
大数据·人工智能·matlab
极市平台38 分钟前
骁龙大赛技术分享第4期来了
人工智能·经验分享·笔记·后端·个人开发
暗然而日章1 小时前
C++基础:Stanford CS106L学习笔记 4 容器(STL与序列容器)
c++·笔记·学习
遇见火星1 小时前
SSH 安全实战:配置加固、防爆破与二次验证!
笔记·安全·ssh
IT笔记1 小时前
【Rust】Rust数组和Vec安全读写笔记
笔记·安全·rust
javaGHui1 小时前
安卓传感器横竖屏切换
android·经验分享·笔记
裤裤兔2 小时前
利用matlab进行FDR校正的实现方式
数据结构·算法·matlab·多重比较矫正·校正·fdr