我有一个矩阵65536x8,包含所有可能的值组合 - 45 90 135 180(8列)。
我需要删除所有不包含所有四个值的行(每行不能缺少任何这些值)。
这是我尝试过的(不工作):
>> orient(orient(numel(orient(:,1))) == 45 && 90 && 135 && 180,:)
ans =
Empty matrix: 0-by-8
在MATLAB中有一些有效的方法吗?
答案 0 :(得分:1)
这应该让你知道如何去做:
A = [1 1 1
1 1 2
1 1 3
1 2 1
1 2 2
1 2 3
1 3 1
1 3 2
1 3 3
2 1 1
2 1 2
2 1 3];
A(any((A == 1)') & any((A == 2)') & any((A == 3)'),:)
ans =
1 2 3
1 3 2
2 1 3
或者通常使用循环(只有4个数字,这应该非常快):
rows = true(size(A,1),1); %// Initialization
U = unique(A); %// List of numbers
for n = 1:size(U,1)
rows = rows & any((A == U(n))')';
end
A(rows,:)