我正在测试一个向量,看它是否包含任何NaN。如果确实如此,那么我不希望我的行动被执行。如果它不包含NaN,则应执行该操作。目前,我的代码看起来像这样(并且有效):
if find(isnan(myVector))
else
action;
end
由于if
部分中没有任何内容,因此根据else
条款执行操作似乎很草率。如何重新构造块,以便我不需要使用else
?
我已经尝试了以下内容:
if ~find(isnan(myVector))
if find(~isnan(myVector))
if find(isfinite(myVector))
为了澄清,我的输入向量可以包含任意数量的NaN,但我只想要'动作;'如果没有则执行。
答案 0 :(得分:12)
if all(~isnan(myVector))
action;
end
答案 1 :(得分:2)
尝试:
if isempty(find(isnan(myVector)))
action;
end
答案 2 :(得分:1)
看看this question。如果您的数据集足够小,您可以尝试查找所有NaN元素然后对它们进行计数。
答案 3 :(得分:1)
问题是find返回的是向量而不是布尔值。你想要的是:
length(find(isnan(myVector))) == 0
虽然我承认我不记得matlab如何比较矢量。