matlab去除向量的重复点,matlab矩阵中如何去掉重复的行? | 学步园
发布日期:2021-08-20 00:42:50 浏览次数:6 分类:技术文章

本文共 990 字,大约阅读时间需要 3 分钟。

近来用matlab编程遇到了这样两个问题,如有以下矩阵:

IDX = [1,2,3;

2,3,1;

1,2,3;

2,3,1;

1,1,1;

1,1,1];

问题1)怎样去掉其中的重复行呢?

在网上找了半天,大家都提供的是自己写的循环。我在想,这样简单的问题matlab肯定提供了基础函数调用。

最后发现是这个函数:unique

它的调用说明如下(来自matlab的help,这里我就不想翻译了)

1357718087_8375.JPG

举例代码如下:

IDX = [1,2,3;

2,3,1;

1,2,3;

2,3,1;

1,1,1;

1,1,1];

classNo = unique(IDX,'rows');

得到结果如下:

classNo =

1     1     1

1     2     3

2     3     1

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

问题2)在matlab中怎样找到相同的行?并找到其位置。

问题1的结果矩阵:

classNo =

1     1     1

1     2     3

2     3     1

新来两个向量(与classNo列相同)如下:

a = [1,2,3];

b = [1,5,4];

我们要判断a,b是不是在classNo中出现过并找到相应位置

原来用的函数是:ismember

它的调用说明如下(来自matlab的help,这里我就不想翻译了)

1357718497_2194.JPG

上面的例子,对应代码如下:

IDX = [1,2,3;

2,3,1;

1,2,3;

2,3,1;

1,1,1;

1,1,1];

classNo = unique(IDX,'rows');

a = [1,2,3];

b = [1,5,4];

[tfa,loca] = ismember(a,classNo,'rows')

[tfb,locb] = ismember(b,classNo,'rows')

结果如下:

tfa =

1

loca =

2

tfb =

0

locb =

0

说明:a在classNo中能找到,并对应的位置为2

b找不到。

转载地址:https://blog.csdn.net/weixin_31856057/article/details/115814380 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:matlab gui串口调试,matlab中GUI的串口调试程序(发送与接收,很全面)
下一篇:lbp与matlab gui实现,LBP之matlab实现

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年12月18日 22时29分56秒