假设
A = 1 0 0
1 0 1
0 0 1
1 0 1
0 0 0
现在我想在同一行提取第1和第3列值为1的行 即 输出应该是
1 0 1
1 0 1
尝试使用A(A(1:end,1)==A(1:end,3)==1)
,但未获得结果。
答案 0 :(得分:3)
试试这个:
A(A(:,1) == 1 & A(:,3) == 1, :)
答案 1 :(得分:0)
也许是一个更好的例子 -
A = [
1 1 0
1 0 1
0 0 1
1 0 1
0 0 0]
您可以使用ismember
-
out = A(ismember(A(:,[1 3]),[1 1],'rows'),:)
输出 -
out =
1 1 1
1 0 1
1 0 1
扩展部分:如果您想将此扩展为更大的案例,请说明A
为10x10的案例,并且您希望使用{提取所有行{1}}在1个,3个,6个,8个和9个列号上,所以只需执行此操作 -
ones
答案 2 :(得分:0)
如果您确定A
符合逻辑,或者只包含0和1,那么
A(A(:,3) & A(:,1), :)
否则,你需要与1进行明确比较,然后再使用Rafael的解决方案。
链接无法正常工作(您的初始尝试)的原因如下。考虑第一部分:
>> ( A(1:end,1)==A(1:end,3) )
ans =
0
1
0
1
1
将此与1
进行比较显然会得到相同的结果:
>> ( A(1:end,1)==A(1:end,3) ) == 1
ans =
0
1
0
1
1
例如,您并未将值与1进行比较,而是将比较的结果与1进行比较。请注意,顺序无关紧要:
>> 1 == A(1:end,1) == A(1:end,3)
ans =
0
1
0
1
1
>> A(1:end,1) == 1 == A(1:end,3)
ans =
0
1
0
1
1