![](/css8/img/logo1.png)
本文共 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,这里我就不想翻译了)
举例代码如下:
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,这里我就不想翻译了)
上面的例子,对应代码如下:
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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
关于作者
![](/css8/img/my2.jpg)