【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
相关推荐
d111111111d2 小时前
STM32外设学习-WDG看门狗-(学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习
数据门徒3 小时前
《人工智能现代方法(第4版)》 第7章 逻辑智能体 学习笔记
人工智能·笔记·学习
不蒸馒头曾口气3 小时前
申论素材学习笔记-以产业振兴激活乡村全面振兴
笔记·学习
做一道光3 小时前
电机控制——电流采样(双电阻)
笔记·单片机·嵌入式硬件·电机控制
wallace20183 小时前
笔记:SpringCloud服务间调用的方式
笔记
愚昧之山绝望之谷开悟之坡4 小时前
什么是大非农
笔记
Chloeis Syntax4 小时前
MySQL初阶学习日记(4)--- 插入、聚合、分组查询 + 数据库约束
数据库·笔记·学习·mysql
机器学习之心4 小时前
MATLAB基于云模型的模糊综合评价法——以电工学课程教学评价为例
matlab·云模型·模糊综合评价法
四谎真好看4 小时前
Java 黑马程序员学习笔记(进阶篇31)
java·笔记·学习·学习笔记
Element_南笙5 小时前
吴恩达新课程:Agentic AI(笔记11)
大数据·人工智能·笔记·算法·机器学习