【发布时间】:2012-09-16 21:33:20
【问题描述】:
我正在测试一个向量以查看它是否包含任何 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,但我只想要'action;'如果根本没有就执行。
【问题讨论】:
-
请清理您的问题;目前它是矛盾的:您写道:“如果它甚至包含一个 NaN,则应该执行该操作。”以及“为了澄清,我的输入向量可以包含任意数量的 NaN,但我只想要 'action;'如果根本没有,则执行。”
-
除了
find(isnan(myVector)),您应该使用any(isnan(myVector))。它更快更干净,因为any生成布尔输出而不是向量。 -
所以应该允许立即选择答案!十分钟的等待意味着我不小心选错了>.
标签: matlab if-statement nan