从原始数据集中查找匹配的行,略微缩减版本

时间:2013-03-05 16:38:17

标签: matlab

我有两个数据集,原始数据包含每个变量的所有标签和描述,但第二个是此数据集的简化版本,用于特定实验,但没有任何关于变量的信息,包含在原来的。所以,我正在尝试匹配两个数据集。

我的问题是,如果在两个矩阵维度中都进行了轻微的数据缩减,我如何才能找到新数据集中是否存在原始数据集中的行?

更具体地说,原始数据集是24481 x 117矩阵,新的矩阵是24188 x 97矩阵。但是,这里的问题是我没有关于新数据集中包含或未包含哪些行或列的信息

2 个答案:

答案 0 :(得分:0)

你可以做的是用较少的元素填充矩阵,使其与原始数据的大小相匹配。然后使用

find(A==B)

AB是矩阵

答案 1 :(得分:0)

使用 intersect 功能为我工作。由于已经在两个维度中执行了数据缩减,首先我在矩阵中查找前两列向量的交集(假设至少列顺序已在缩减中保留)。

>> M = magic(5)

M =

  17    24     1     8    15
  23     5     7    14    16
   4     6    13    20    22
  10    12    19    21     3
  11    18    25     2     9

>> X = M([2,3,5], [1,2,4,5])

X =

  23     5    14    16
   4     6    20    22
  11    18     2     9

>> [c,xi, mi]=intersect(X(:,1),M(:,1))

mi 是来自缩小矩阵X中存在的原始矩阵M的所有行的列索引向量。 对矩阵中的两个第一行执行相同操作,为从原始矩阵M中选择的所有列提供了行索引向量。

>> [c,xi, mi]=intersect(X(1,:),M(1,:))

这个解决方案的一个缺点是,当在新集合中没有选择原始矩阵的第一行或第一列时,那么你可以从原始矩阵中移动比较矢量的索引,幸运的是没有太多;)

>> [c,xi, mi]=intersect(X(1,:),M(2,:))