2014-01-28 69 views
1

我有一個矩陣65536x8,其中包含所有可能的值組合 - 45 90 135 180(8列)。基於特定條件從矩陣中移除行

我需要刪除所有不包含所有四個值的行(每行不能缺少任何這些值)。

這是我試過(不工作):

>> orient(orient(numel(orient(:,1))) == 45 && 90 && 135 && 180,:) 

ans = 

    Empty matrix: 0-by-8 

有一些有效的方式在MATLAB做到這一點?

回答

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,:)