【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
相关推荐
小蜜蜂爱编程1 天前
逻辑回归学习笔记
笔记·学习·逻辑回归
摇滚侠1 天前
Vue 项目实战《尚医通》,完成预约通知业务,笔记21
前端·vue.js·笔记·前端框架
YJlio1 天前
VMMap 学习笔记(8.3):VMMap 窗口全解析——内存类型、指标含义、颜色视图怎么读
笔记·学习·visual studio
MATLAB代码顾问1 天前
MATLAB实现CNN(卷积神经网络)图像边缘识别
开发语言·matlab·cnn
云半S一1 天前
春招准备之MyBatis框架篇
经验分享·笔记·mybatis
唔皇万睡万万睡1 天前
基于模板匹配的数字和大写字母识别(Matlab)
图像处理·人工智能·机器学习·计算机视觉·matlab
Helibo441 天前
C++pair学习笔记
c++·笔记·学习
CarmenHu1 天前
大模型应用评估指标学习笔记
笔记·学习
optimistic_chen1 天前
【Java EE进阶 --- SpringBoot】Spring 核心 --- AOP
spring boot·笔记·spring·java-ee·aop·java注解
卡提西亚1 天前
一本通网站1130:找第一个只出现一次的字符
数据结构·c++·笔记·算法·一本通