【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
相关推荐
Nu11PointerException1 小时前
JAVA笔记 | ResponseBodyEmitter等异步流式接口快速学习
笔记·学习
亦枫Leonlew2 小时前
三维测量与建模笔记 - 3.3 张正友标定法
笔记·相机标定·三维重建·张正友标定法
考试宝2 小时前
国家宠物美容师职业技能等级评价(高级)理论考试题
经验分享·笔记·职场和发展·学习方法·业界资讯·宠物
黑叶白树4 小时前
简单的签到程序 python笔记
笔记·python
幸运超级加倍~5 小时前
软件设计师-上午题-15 计算机网络(5分)
笔记·计算机网络
芊寻(嵌入式)6 小时前
C转C++学习笔记--基础知识摘录总结
开发语言·c++·笔记·学习
准橙考典7 小时前
怎么能更好的通过驾考呢?
人工智能·笔记·自动驾驶·汽车·学习方法
密码小丑8 小时前
11月4日(内网横向移动(一))
笔记
鸭鸭梨吖9 小时前
产品经理笔记
笔记·产品经理
齐 飞9 小时前
MongoDB笔记01-概念与安装
前端·数据库·笔记·后端·mongodb