2013-02-13 20 views
6

Tôi biết tôi có thể sử dụng isnan để kiểm tra các yếu tố cá nhân, chẳng hạn nhưMATLAB: Làm thế nào để kiểm tra xem bất kỳ phần tử trong ma trận của tôi là nan và làm điều gì đó nếu đó là trường hợp

for i=1:m 
    for j=1:n 
     if isnan(A(i,j)) 
      do something 
     end 
    end 
end 

Tuy nhiên, thay vì những gì Tôi muốn làm là

if any(isnan(A)) 
     do something 
end 

Khi tôi cố gắng làm điều này, nó không đi vào đối số vì nó được coi là sai. Nếu tôi chỉ cần nhập any(isnan(A)), tôi chỉ nhận được 1 0 1. Vậy làm cách nào để thực hiện việc này?

Trả lời

7
any(isnan(A(:))) 

Kể từ A là một ma trận, isnan(A) cũng là một ma trận và any(isnan(A)) là một vector, trong khi báo cáo kết quả if thực sự muốn có một đầu vào vô hướng. Sử dụng ký hiệu (:) flattens A thành một véc tơ, bất kể kích thước ban đầu.

+0

Cảm ơn bạn, điều này đã giải quyết được vấn đề – Niseonna

Các vấn đề liên quan