2011-11-13 13 views
34

Tôi hiện đang bắt đầu làm việc với octave để phân tích dữ liệu và có một số vấn đề đối với thao tác ma trận cụ thể.Chỉ chọn một số hàng cụ thể thỏa mãn điều kiện

Giả sử bạn có ma trận dữ liệu sau:

 

    A = 

     1 11 22 33 
     44 13 12 33 
     1 14 33 44 

Bây giờ tôi muốn xóa tất cả các hàng của ma trận này mà không thực hiện ví dụ các điều kiện sau đây.

 

    octave:6> A(:, 4) == 33 
    ans = 

     1 
     1 
     0 

Và tôi sẽ nhận được ma trận của mẫu đơn này mà chỉ chọn những hàng:

 

    A_new = 

     1 11 22 33 
     44 13 12 33 

Tôi biết điều này là có thể với sự giúp đỡ của một số vòng. Nhưng có thể có một giải pháp sạch hơn, ví dụ: bằng cách sử dụng thư viện chuẩn được cung cấp? Đó sẽ là tuyệt vời:]

Một số câu hỏi tương tự cũng được đã được đăng cho R: In R, select rows of a matrix that meet a condition

Trả lời

50

Hãy thử:

A = [ 
    1 11 22 33 
    44 13 12 33 
    1 14 33 44 
]; 
idx = (A(:,4)==33); 
A_new = A(idx,:) 

này được sử dụng logical indexing

+0

Vậy đó tôi đang tìm kiếm. Cám ơn. – Ruun

+0

siêu hữu ích, cảm ơn – Aerodyno