MATLAB知识点: unique函数 提取数组中的唯一值

​讲解视频:可以在bilibili搜索《MATLAB教程新手入门篇------数学建模清风主讲》。​

MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili


节选自第3章 3.4.5 集合运算

unique函数可用来提取数组中的唯一值,它可以用在我们学过的向量和矩阵上,也可以用在我们后续章节要学的表格类型的数据上。

先以向量为例,unique函数的用法如下:

如果A是一个向量,C = unique(A) 会对向量A进行去重操作,即提取向量A的唯一值。返回的向量C和输入的向量A的方向相同,向量C的每一个元素都来自向量A且互不相同,同时,MATLAB会自动将C中元素升序排列。(显然,numel(A)≥numel(C)对任意的A都成立)

另外,unique函数可以有最多三个返回值:[C,ia,ic] = unique(A),这里的ia和ic都是索引向量,ia是C中的每个元素在A中的索引值,ic是A中的每个元素在C中的索引值。因此有下面的等式成立:A(ia)等于C 且 C(ic)等于A。

C = [-6 -3 5 8 10] 是A中的唯一值;

ia = [2;7;1;5;4] 是一个列向量:第一个元素2代表的含义是C中第一个元素-6在A中的索引值是2(A中有两个-6,MATLAB会返回第一个-6的索引);第二个元素是7,表示C中第二个元素-3在A中的索引值是7;第三个元素是1,表示C中第三个元素5在A中的索引值是1;依此类推。

ic = [3;1;3;5;4;1;2;2]也是一个列向量:第一个元素3代表的含义是A中第一个元素5在C中的索引值是3;第二个元素1代表的含义是A中第二个元素-6在C中的索引值是1;依此类推。

上面得到的唯一值向量C都会自动进行升序排列,如果我们不希望MATLAB自动排序,可以在unique函数的输入最后增加一个参数'stable',这样MATLAB会按照与A中相同的顺序返回C中的值。

unique函数还可以作用到矩阵上,它的用法如下:

如果A是一个矩阵,那么unique(A)的结果和unique(A(:))的结果相同。但是,如果我们加一个输入参数'rows',那么unique(A, 'rows')会将A的每一行视为一个整体,会返回A矩阵的唯一行。注意,MATLAB默认会对唯一行进行排序,排序规则如下:优先按照第一列元素升序排列,第一列元素相同时,会按第二列元素升序排列,依此类推。当然,如果你希望按照与A中相同的顺序返回唯一值,则可以在输入的最后加一个参数'stable'。

unique函数用于矩阵上时,也可以有最多三个返回值,但这种情况我们用的非常少,感兴趣的同学可以在MATLAB中进行测试。

相关推荐
两年半的个人练习生^_^3 分钟前
每日一学:设计模式之原型模式
java·开发语言·设计模式·原型模式
elseif1233 分钟前
初学者必背【考点清单(大全)】【上篇】
开发语言·c++·笔记·学习·循环结构·分支结构·考纲
并不喜欢吃鱼4 分钟前
从零开始C++----二.(下篇)模版进阶与编译全过程的复习
开发语言·c++
23471021276 分钟前
4.17 学习笔记
开发语言·软件测试·笔记·python·学习
不知名的老吴21 分钟前
View的三大特性之一:迟绑定
开发语言·c++·算法
深邃-29 分钟前
【Web安全】-基础环境安装:虚拟机安装,JDK环境安装(1)
java·开发语言·计算机网络·安全·web安全·网络安全·安全架构
前端老石人32 分钟前
前端网站换肤功能的 3 种实现方案
开发语言·前端·css·html
Legendary_00833 分钟前
LDR6500U PD取电芯片:赋能设备Type-C升级,解锁高效安全取电新体验
c语言·开发语言·安全
Rust研习社39 分钟前
深入理解 Rust 裸指针:内存操作的双刃剑
开发语言·后端·rust
Huangjin007_39 分钟前
【C++ STL篇(四)】一文拿捏vector常用接口!
开发语言·c++·学习