2012-07-04 139 views
2

我正在写一个解决方案,我需要检查一个数组是否包含任何NaN值。如果它不是,那么我可以继续并在数据上运行一个函数。这是我目前的解决方案:MATLAB:优雅的方法来检查'if'语句是不是真

if find(isnan(inputData)) 
% Nothing goes here since I only want the function to run if the 'if' statement fails 
else 
    doFunction(inputData); 
end 

是否存在否定'if'语句的优雅方式;从而避免了空的第一个子句?

回答

15
if ~any(isnan(x(:))) 
    doFunction(inputData); 
end 

这对你来说够高雅吗?如果不是,你觉得怎么样?

if all(isfinite(x(:))) 
    doFunction(inputData); 
end 
+1

很好,谢谢。但我仍然怀疑在MATLAB中是否有一种通用的方法来立即检查'else'而不是'if'..? – CaptainProg

+3

@CaptainProg:一般的方法是否定if语句中的条件。但是,如您在OP中那样进行编码可以提高可读性。 – Jonas

+4

Whaddya是什么意思?我以为你想避免一个空的if子句,这就是你所拥有的。 –