MATLAB-相关

寻找矩阵中索引满足某一条件的数据

例如 PTNIDX 有两列数据, 第一列是单元的 tag, 第二列是单元所属分块的编号, 那么想要找到所有分块编号为 iptn 的单元编号, 可以用如下代码实现:

1
elemID = PTNIDX(PTNIDX(:,2)==iptn,1)

首先, PTNIDX(:,2)==iptn 返回长度为 size(PTNIDX,1) 的逻辑数组, 逻辑数组可以作为数组的索引, 并且逻辑值为false 的编号不返回数据, 例如返回的逻辑数组中 true 的数量为 ntrue, 那么 elemID 维度就是 ntrue x 1

如果想找到某一个单元标签所在数组 elemID 索引位置, 那么使用函数 find:

1
eidx = find(elemID==etag);

函数 find 会返回一个索引数组(如果确实找到这个元素的话), 注意这与逻辑数组的索引方式是不同的