例如,假设我有一个3列的新闻通知矩阵,其中第一列给出序列中新闻的序列号,第二列给出新闻的类别,第三列给出是否通知是否打开(二进制,1表示读取,0表示未读取)。因此,摘录可能如下所示:
1 12 1
2 13 0
3 13 1
4 12 0
5 14 1
6 13 0
7 12 0
8 13 1
9 14 0
10 12 1
我想要读取第12类通知的所有行。所以,输出应该是这样的:
1 12 1
10 12 1
因此,如果数据矩阵被称为input
,并且我想要的结果矩阵被命名为output
,我将编写以下代码:
for i=1:size(input,1)
temp = input(input(:,2)==12,:);
output = temp(temp(:,3)==1,:);
end
但我认为这在MATLAB中应该是一件微不足道的事情。那么,是否有一个班轮可以做到这一点?
答案 0 :(得分:4)
output=input(find(input(:,2)==12 & input(:,3)==1),:)
答案 1 :(得分:0)
这是一个使用假定为快速内置函数ismember
的解决方案,它实际上是您想要实现的功能的专用函数:
%// data
A =[1 12 1
2 13 0
3 13 1
4 12 0
5 14 1
6 13 0
7 12 0
8 13 1
9 14 0
10 12 1]
%// sequence to search for
x = [ 12 1 ]
%// filtering
out = A( ismember(A(:,2:3),x,'rows'), : )
out =
1 12 1
10 12 1