如何在matlab中根据列属性值选择特定行?
我有如何在matlab中根据列属性值选择特定行?,matlab,matrix,Matlab,Matrix,我有[句子交叉词]逻辑矩阵,其中value=1表示该句子中有一个词,而0表示缺少,如下所示: 0 0 1 1 1 0 1 0 0 0 0 1 1 1 0 0 row = 1 2 4 我已经做了一些处理并选择了特定的单词,即2和3 result = 2 3 现在,我只想选择单词2和3的值等于1的行,并按如下方式返回该行的行号: 0 0 1 1 1 0 1 0 0 0 0 1 1 1 0 0 row = 1 2 4 对于结果变量中的每个单词都应该这样做-谢谢。假设A作为输入二进
[句子交叉词]
逻辑矩阵,其中value=1
表示该句子中有一个词,而0
表示缺少,如下所示:
0 0 1 1
1 0 1 0
0 0 0 1
1 1 0 0
row = 1 2 4
我已经做了一些处理并选择了特定的单词,即2和3
result = 2 3
现在,我只想选择单词2和3
的值等于1的行,并按如下方式返回该行的行号:
0 0 1 1
1 0 1 0
0 0 0 1
1 1 0 0
row = 1 2 4
对于结果变量中的每个单词都应该这样做-谢谢。假设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
为了好玩,您也可以使用它作为替代方法-
row = find(A(:,result)*ones(numel(result),1))
假设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
为了好玩,您也可以使用它作为替代方法-
row = find(A(:,result)*ones(numel(result),1))
首先选择要提取的列,并创建一个将所有这些列连接在一起的矩阵。接下来,结合使用和操作柱,以获得所需位置
因此,考虑到存储在X
中的逻辑矩阵,请执行以下操作:
ind = [2 3];
matr = X(:,ind);
vals = find(any(matr, 2));
通过以上示例,我们得到:
vals =
1
2
4
首先选择要提取的列,并创建一个将所有这些列连接在一起的矩阵。接下来,结合使用和操作柱,以获得所需位置
因此,考虑到存储在X
中的逻辑矩阵,请执行以下操作:
ind = [2 3];
matr = X(:,ind);
vals = find(any(matr, 2));
通过以上示例,我们得到:
vals =
1
2
4
哈哈哈。相隔36秒。美好的很高兴看到我的想法和你一样!哈哈哈。相隔36秒。美好的很高兴看到我的想法和你一样@迪瓦卡-谢谢:)+我也祝你。。。我不知道为什么会有反对票。我和你在同一时间也在研究这个答案。我讨厌人们否决投票,他们不给出理由。@rayryeng感谢你的回答,它是有效的,想问你是否有一种方法可以传递一个变量,例如:result
,它会自动选择要选择的列,比如ind=result代码>而不是给出ind=[23]代码>因为在我的真实场景中,选择了大量列只需使用ind=result代码>。只要result
是一个列向量,那么上面的代码就可以工作。我刚刚做了ind=[23]代码>以配合您的示例。@Divakar-谢谢:)+我也祝你。。。我不知道为什么会有反对票。我和你在同一时间也在研究这个答案。我讨厌人们否决投票,他们不给出理由。@rayryeng感谢你的回答,它是有效的,想问你是否有一种方法可以传递一个变量,例如:result
,它会自动选择要选择的列,比如ind=result代码>而不是给出ind=[23]代码>因为在我的真实场景中,选择了大量列只需使用ind=result代码>。只要result
是一个列向量,那么上面的代码就可以工作。我刚刚做了ind=[23]代码>以配合您的示例。