WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Matlab macht aus Null Komplexe Zahlen

 

dresi
Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 02.01.09
Wohnort: Zürich
Version: ---
     Beitrag Verfasst am: 18.11.2010, 21:10     Titel: Matlab macht aus Null Komplexe Zahlen
  Antworten mit Zitat      
Hallo miteinander,

Mein Skript macht die komischsten Sachen:

Ich lese ein *.mat file ein (im gesamten sind es 10) dass einen Struct mit 500 Einträgen beinhaltet. Nun gehe ich mit zwei for schleifen durch die Daten und erzeuge Vektoren, zum Teil wird noch etwas umgerechnet etc.

Das Ganze lief die Woche durch gut, bis auf heute. Auf einmal macht Matlab aus der Null eine komplexe Zahl der Form 0.0000 + 0.0000i

Der Hammer kam aber als ich versuchte den Verursacher des Phänomens auszmachen und zwar mit der if-Abfrage:

Code:

if isreal(Film(Im,1).Angle.SprayAngle(1,posmax,2)...
        *180/pi()~=1)
    disp(['Image number: ',num2str(Im),' and Film number ',num2str(film)])
    disp('STOP')
end
 


beim zweiten disp() habe ich einen Breakpoint gesetzt. Bei Bild nummer 43 stoppte Matlab brav am Breakpoint, als ich aber den Wert :

Code:

Film(Im,1).Angle.SprayAngle(1,posmax,2)*180/pi()                    
 


über F9 im Command habe ausführen lassen, gibt es mir "0" als ans an und als ich:
Code:

if isreal(Film(Im,1).Angle.SprayAngle(1,posmax,2)...
    *180/pi())
 


eingegeben habe, gab mir die Command line "1", also true zurück!!!
Wie ist so etwas möglich?

Ein Neustart von Matlab und anschliessend des PCs brachten keine Besserung.

Hat jemand eine Lösung, oder irgend eine Ahnung was das sein könnte?

Vielen Dank im Voraus
Gruss,
dresi
Private Nachricht senden Benutzer-Profile anzeigen


lilov
Forum-Century

Forum-Century


Beiträge: 193
Anmeldedatum: 05.05.10
Wohnort: Bremerhaven
Version: ---
     Beitrag Verfasst am: 19.11.2010, 01:50     Titel:
  Antworten mit Zitat      
Hi,

du hast wahrscheinlich irgendwo eine komplexe Zahl im Vektor. Auch wenn's nur eine komplexe Zahl ist, definiert das matlab als ein komplexes Vektor und ändert die Schreibweise der Nullen auch. das ändert ja aber nichts an deren mathematischen Bedeutung. Matlab zeigt die zwar in einer komplexen Fotm, rechnet aber mit den Zahlen als reale Zahlen.


Code:

a=[0;5+5i];
a(1)

ans =

     0
 


Gruß,

lilov
Private Nachricht senden Benutzer-Profile anzeigen
 
dresi
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 02.01.09
Wohnort: Zürich
Version: ---
     Beitrag Verfasst am: 19.11.2010, 10:00     Titel:
  Antworten mit Zitat      
Hallo lilov,

Danke für deine Antwort, das erklärt teilweise das komische Verhalten. Was mich aber wirklich stutzig macht ist die Tatsache dass die Abfrage anch einem reellen Wert per Skript eine logische "0" bringt, während der exakt gleiche Eintrag bei wiederholter Eingabe im Command Window eine "1" liefert.

Hmm...
Private Nachricht senden Benutzer-Profile anzeigen
 
dresi
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 02.01.09
Wohnort: Zürich
Version: ---
     Beitrag Verfasst am: 19.11.2010, 11:35     Titel:
  Antworten mit Zitat      
Ok, ich denke ich hab's gefunden. In einer der Dateien war ganz tief vergraben eine konmplexe Zahl vergraben. Diese hat dann Matlab dazu animiert die ganzen Werte in Komplexen Zahlen darzustellen.

Und meine quick and dirty methode zur überprüfung hat einen kleinen aber relativ mühsamen Typo:
Code:

if isreal(Film(Im,1).Angle.SprayAngle(1,posmax,3)...
%                     *180/pi()~=1)
 


aber die "ungleich eins" sollte eigentlich ausserhalb der Klammer stehen, denk ich:
Code:

if isreal(Film(Im,1).Angle.SprayAngle(1,posmax,3)...
%                     *180/pi())~=1
 


sonst wir ja nur immer überprüft ob der True/False Vergleich real ist und das ist er garantiert...

War ein langer Tag gestern...
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.