matlab - 如何逐行比较矩阵与指定条件

标签 matlab matrix indexing compare row

我有一个这样的数据矩阵:

A=[ 5   0   10  15  0.021;
    5   0   15  20  0.011;
    10  15  5   0   0.022;
    15  20  5   0   0.009]

我需要将每一行与所有其他行进行比较。标准是: 如果这一行的第一和第二列与第二行的第三和第四列相同,并且如果这一行的第三和第四列与另一行的第一和第二列相同,我需要这两行的索引。

例如:

A = [5  0 10 15  *;
     *  *  *  *  *;
     10 15 5  0  *;
     *  *  *  *  *];

如你所见:

  • 第 1 行的第 1 个和第 2 个元素等于第 3 行的第 3 个和第 4 个元素
  • 第 1 行的第 3 个和第 4 个元素等于第 3 行的第 1 个和第 2 个元素

我不想改变矩阵的顺序。

最佳答案

ismember可以这样做:

[~,b]=ismember(A(:,1:4),A(:,[3 4 1 2]),'rows');
ind = find(b);
ind(:,2) = b(ind(:,1));

ind 将包含冗余条目(例如 [1 2] 以及 [2 1]),因为您的标准是对称的,您可以使用以下方法过滤它们:

ind = unique(sort(ind,2),'rows')

关于matlab - 如何逐行比较矩阵与指定条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13145515/

相关文章:

matlab - Simulink 中具有定义频率内容的信号

matlab - 如何找到数组元素的索引数组?

重新排序配对变量

c# - 有两个相同的数组是否需要双倍的内存?

Matlab 在 RegressionTree mex 文件中崩溃

matlab - 从 MATLAB 图形对象继承

c++ - 计算旋转矩形的顶点

r - 矩阵变换的快速方法?

mysql - 使用 3 个表进行查询优化

java - 返回二维数组 java.lang.Object 中任意对象的索引。