1

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

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

更具体地说,原始数据集是 24481 x 117 矩阵,新数据集是 24188 x 97 矩阵。但是,这里的问题是我不知道新数据集中包含或不包含哪些行或列

4

2 回答 2

0

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

find(A==B)

A并且B是矩阵

于 2013-03-05T17:16:16.307 回答
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,:))
于 2013-03-09T05:39:33.317 回答