matlab矩阵里有很多有相同值的元素,如何剔除多余的,每个值只留一个元素

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab矩阵里有很多有相同值的元素,如何剔除多余的,每个值只留一个元素相关的知识,希望对你有一定的参考价值。

如图,最终所需要生成的矩阵
sum=
2.5000 5.0000
3.0000 5.5000
2.5000 4.0000

你可以看下diff()这个函数,把返回的值当逻辑值用。这样比循环快很多,如果数据量小的话,循环找也用不了几微秒。应该有更好的办法,抛砖引玉…… 参考技术A 用比较笨的办法,使用循环,内部嵌套if进行判定即可 参考技术B 有啊,很简单,一个unique函数就能搞定拉追问

你这个确实很简单,但是不是我想要的啊,我是要找出值相同的行,可能描述有误,但是图很清楚,大神还有另解吗?

本回答被提问者采纳

matlab中常用的函数

find()函数:

功能:用于返回矩阵中想要的元素的索引值;

用法: index = find(X), 当X为一个矩阵时,返回的index是一个列向量,表示矩阵X中非零值的索引值,这个索引值吧,是按把矩阵按column-major 排成列向量的索引值;

        index = find(X, k, ‘first’) ,  与上面相同,只是返回前K个不为零的索引值;

        index = find(X, k, ‘last’),   上上面相同,只是返回后K个不为零的索引值;

        [row, col] = find(X,……),  返回不为零的元素的行索引值与列索引值;其中row与col 都是列向量;

        [row,col, v] = find(X,……), 增加了一个V, 用于存放非零的元素;

另外,还可以这样: index = find(X > n) 或 index = find(X = n) 等返回我们需要的元素的索引;

sort()函数:

功能: 排序;

用法: [B, index] = sort(A, dimenstion, mode),  其中dimenstion表示需要排序的维度, mode: ‘ascend’表示升排列, ’descend’表示降序排列; B表示排序后的矩阵, index 表示排序后的索引;

 

 

待补;

以上是关于matlab矩阵里有很多有相同值的元素,如何剔除多余的,每个值只留一个元素的主要内容,如果未能解决你的问题,请参考以下文章

如何用matlab筛选一个数组中大于某值的数

如何提取出cell中具体数据 matlab

matlab数组中如何找某个值的坐标

matlab计数行包含矩阵中的相同元素

MATLAB学习四:矩阵寻访

matlab数组中如何找某个值的坐标