4

空のすべてのものが同じ答えを与えるはずです。しかし、ここでは彼らは別の答えを出しており、すべてと空のすべてが真です。誰でも matlabs のこの動作を説明できますか (バージョン 2010a->2012b でテスト済み)。

>>任意([])

ans =

 0

しかし

>> すべて([])

ans =

 1
4

2 に答える 2

5

この動作は明示的に文書化されています:

の振る舞いallは少し直感に反すると思います。推測では、対称性のために、次の等価性が保持されることを意図していると思います。

~all(A) == any(~A)
于 2013-03-06T20:28:33.223 に答える
2

anyall空の配列では絶対に同じ答えを出すべきではありません.MATLABの動作は文書化されており、正しいものです。

any(A)は「真であるという要素が存在するA」、つまり

∃x∈A x は true

には要素がないためA、正しく返されますfalse

all(A)「 のすべての要素についてA、その要素が true である」、つまり

∀x∈A x は true

おそらくこれはあまり直感的ではありませんが、 には要素がないためA、この文は真であり、MATLAB は正しく を返しますtrue。一階論理の教科書は、これを確認します。

MATLAB の動作が実際に間違っているように見え、上記と矛盾する場合が必要な場合は、次を試してください。

>> if [] disp('hello'); else disp('bye'); end
bye

それ以外の場合if Xtrueすべて、 のすべての要素Xが true の場合です。しかし、Xがの場合[]if動作が異なります。それも文書化されています。

于 2013-03-07T10:13:10.497 に答える