找到具有多个属性的行

时间:2012-11-24 08:07:04

标签: matlab

我有一个大小为10000x5的矩阵,格式为[id, year, month, day, value]

例如:

[ 1 2004 1 1 100;
  1 2004 1 2 201;
  2 2004 1 1  30;
  2 2004 1 2 123;
  2 2005 1 1 300;
  2 2005 1 2 103;
  ...]

我想根据搜索条件year==2004 && month==1 && day==1过滤并将此矩阵的子集复制到另一个矩阵中。所以我想首先找出与给定标准匹配的向量的行索引是什么。

首先我尝试了,

[row] = find((data(:,2) == 2004 && data(:,3) == 1 && data(:,4) == 1));

但它似乎不适用于多个标准,我收到错误

Operands to the || and && operators must be convertible to logical scalar values.

接下来我尝试了

key = [2004 1 1];
[~,index] = ismember(data,key,'rows')

但它说

Error using ismember. A and S must have the same number of columns.

有没有办法优化语法,或者用其他API来搜索多个条件?

1 个答案:

答案 0 :(得分:2)

查看建议的答案here。它提出了另一种方法。在你的情况下,你会有:

key = [NaN 2004 1 1 NaN];