2013-01-10 26 views
6

Es scheint so, als ob sowohl inf als auch Inf in MATLAB genau gleich sind (ebenfalls nan und NaN, aber nicht Nan). Gibt es einen Unterschied?inf oder Inf? Nan oder NaN?

>> which inf 
built-in (/Applications/MATLAB_R2011b.app/toolbox/matlab/elmat/inf) 
>> which Inf 
built-in (/Applications/MATLAB_R2011b.app/toolbox/matlab/elmat/Inf) 

Wenn sie gleich sind, welche sollte man in der Praxis verwenden? Für die Zuweisung von Arrays habe ich x = inf(3,5) Stil nach zeros und ones alle Small Caps verwendet. Um einen einzelnen Wert zuzuweisen, verwende ich x = Inf. Denkst du, das ist ein konsequenter Einsatz?

+1

Wenn ich es richtig gelesen habe, scheint Ihre Verwendung von "Inf" und "inf" in der Tat konsistent zu sein. –

Antwort

2

Hier sind die Konventionen, die MATLAB zu verwenden erscheint:

Für Nicht-a-Number: und Inf Verwendung inf für die Funktion verwenden: Immer NaN (Außer in Kombinationen wie isnan()

für unbegrenzt nutzen für den Wert (und INFs für Multiples, aber dies ist kein Befehl natürlich ist). Beachten sie, dass dies ein bisschen schwierig ist, da es bedeutet, dass die Bewertung von infInf gibt.

Dedu ced from:

help Inf: inf (N) ist eine N-by-N-Matrix von INFs.

help nan: NaN (N) ist eine N-mal-N-Matrix von NaNs.

help isnan: Zum Beispiel ist Isnan ([pi NaN Inf -Inf]) [0 1 0 0].

12

meist idiomatisch konsistent wäre nan und inf aber MATLAB bietet Ihnen die alternative Möglichkeit NaN und Inf von Kapital, wie Sie es überall, wie im Ausdruck, zum Beispiel finden. Beachten Sie, dass MATLAB case sensitive ist. Niemand wird Nan oder InF verwenden, daher stellt MATLAB diese "Aliase" nicht zur Verfügung.

EDIT: Zur Verwendung in einem Datenvektor, wie in [3.7, 1.2, NaN, 3.1] ich mich konsequent finden NaN auch verwenden, aber das folgende Experiment legt nahe sehr stark, dass diese Verwendung ist nicht intim mit MATLAB, die internen Abläufe . Erstellen Sie eine Funktion n = NaN(), die 4 zurückgibt, und speichern Sie es als NaN.m in Ihrem aktuellen Ordner. Das Definieren des Vektors wie oben wird [3.7, 1.2, 4.0, 3.1] zeigen, dass MATLABNaNals eine Konstante nicht versteht, und eine Funktion nachschlagen wird, die in Übereinstimmung mit MATLAB-Idiomen klein geschrieben werden sollte.

Jetzt lassen Sie uns schnell NaN.m löschen, bevor wir vergessen, und weiterhin NaN in Datenspalten verwenden.

+0

Aber MATLAB zeigt immer Werte als'Inf' und 'NaN', also wenn man einen einzelnen Wert zuweist, ist es sinnvoll,' Inf' anstelle von 'inf' zu verwenden (was angeblich eine Funktion ist, die Arrays von' Inf's zuordnet) @Dennis schlägt vor. – Memming

+0

@Memming, sehe meine Bearbeitung, meine erste Antwort war auf die Verwendung als in 'nan (3)'.* Ausdruck * ist eine Sache, aber es gibt keine Konstante 'NaN' in der MATLAB * -Sprache *. Es stellt sich heraus, dass es immer als eine Funktion analysiert wird. –

+0

(Re: auf Ihre Änderungen) True. Wenn du 'nan.m' probierst, macht es genau dasselbe. Daher ist weder ein konstantes noch ein reserviertes Schlüsselwort (obwohl sich MATLAB dafür beschwert, dass die Funktion ein eingebautes MATLAB ist). Meine Frage war einfach, welche eine bessere Konvention ist, und ich denke, dass es in diesem Fall kultureller ist. Kein Grund, einen Flammenkrieg darüber zu beginnen. :) – Memming

Verwandte Themen