如何根据matlab中的列属性值选择特定行?

时间:2015-04-08 08:16:54

标签: matlab matrix

我有[sentence cross words]逻辑矩阵,其中value = 1显示该句子中存在单词,0表示缺席如下:

0 0 1 1

1 0 1 0

0 0 0 1

1 1 0 0

我做了一些处理并选择了特定的单词,即2 & 3

result = 2 3

现在,我想只选择单词2 & 3的值为equal to 1的行并返回行号,如下所示:

row = 1 2 4

对于结果变量中的每个单词都应该这样做 - 谢谢。

2 个答案:

答案 0 :(得分:3)

认为你正在寻找这样的东西,假设A作为输入二进制数组 -

result = [2 3]; %// select words by IDs
row = find(any(A(:,result),2))

示例运行 -

A =
     0     0     1     1
     1     0     1     0
     0     0     0     1
     1     1     0     0
row =
     1
     2
     4

对于 fun-sake ,您也可以使用matrix-multiplication作为替代方法 -

row = find(A(:,result)*ones(numel(result),1))

答案 1 :(得分:3)

首先选择要提取的列,然后创建一个矩阵,将所有这些列连接在一起。接下来,使用any并与列find结合使用,以获得所需的位置。

因此,如果您的逻辑矩阵存储在X中,请执行:

ind = [2 3];
matr = X(:,ind);
vals = find(any(matr, 2));

通过上面的例子,我们得到:

vals =

     1
     2
     4
相关问题