2010-11-11 14 views
15

Ich schreibe eine Funktion in Matlab. Da sollte etwas nicht stimmen. Die Ausgabe meiner Funktion ist ein Vektor. Wenn ich jedes Element meines Vektors sehe, sehe ich NaN (keine Nummer) und NaNi, das weiß ich wirklich nicht?Was ist NaNi und wie unterscheidet es sich von NaN?

Weiß jemand, was NaNi? ist

Antwort

26

NaNi ist ein imaginärer Not-A-Number:

>>NaN*i 
ans = 
      0 +  NaNi 
+11

+ 1: beste Antwort auf SO 'eine imaginäre Not-eine-Nummer' :-) –

+5

@High Performance Mark: Ich frage mich, ob es möglich ist, noch weniger als eine Nummer zu sein. – Jonas

+0

Ich stimme dieser Interpretation nicht zu. _NaNi_ wird nicht per se verlassen. Die richtige Erklärung wird von @Dennis Jaheruddin gegeben, wobei NaNi die Konsolenverkettung von _NaN_ und _i_ (die Matlab-Imaginärschreibweise) ist. – marsei

4

Eigentlich NaNi existiert nicht in Matlab.

Wenn Sie eine komplexe Zahl haben, sind die angezeigten Werte 'der reale Teil' + 'der komplexe Teil' + 'i'. Dies wird vor dem i ohne einen Raum gezeigt, versuchen:

(-1)^0.5 %This will give 0.0000 + 1.0000i 

Dies bedeutet, dass, wenn der komplexe Teil der Nummer NaN ist, wird es zusammen mit gedruckten i und scheint ein einzelnes Wort NaNi zu sein. Zum Beispiel:

NaN*(1+i) % This will give NaN + NaNi 
x = NaN*i % This will give 0 + NaNi 

Sie werden feststellen, dass es nicht möglich ist NaNi separat zu bewerten oder multiplizieren es mit 1.

Darüber hinaus sind die erwarteten Ergebnisse erzeugt werden, wenn das Ergebnis Inspektion:

real(x) % This will give 0 
imag(x) % This will give NaN 
Verwandte Themen