|
|
Sehr komischer Fehler von MATLAB!!!! |
|
Lou |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 03.02.2009, 13:21
Titel:
|
 |
|
 |
|
Ich weiß nicht ob ich hier richtig bin, aber ich habe in MATLAB etwas programmiert, was nicht klappt, aber ich habe keine Ahnung warum...
1. Ich lese einen Vektor aus einem Multidimensionalen Array aus wobei ich dort nur die erste Spalte benötige:
vec1=array{1}(:,1);
vec1=( 1.6000 ,1.9000 ,2.2000,...,, 13.3000 ,13.6000,13.9000)
2. Desweiteren habe ich noch einen Vektor der folgende Werte enthält:
vec2=(1.0000,1.3000, 1.6000,..., 13.3000,13.6000,13.9000,...,25.6000)
3. Nun möchte ich eine if-Anfrage durchführen
if vec2 == vec1(end)
.....
4. Die if-Anweisung gibt kein TRUE aus, sondern ich erhalte nur NULLEN!! Was aber nicht sein kann, da in vec2 die 13.9 (vec1(end)==13.9) drinen steckt!!!!!!!
Wenn ich das ganze mit if vec2 == vec1(end-2) ausprobiere klappt es! Mit if vec2 == vec1(end-1) schon nicht mehr.
Ich weiß nicht mehr weiter. Selbst wenn ich anstatt vec1(end) direkt die Zahl 13.9 hinschreibe klappt es nicht!
Vielleicht hat ja von euch jemand das gleiche erlebt? Und hat eine Idee woran das liegt??
Viele Grüße und danke!
Lou
|
|
|
|
|
Maddy |

Ehrenmitglied
|
 |
Beiträge: 494
|
 |
|
 |
Anmeldedatum: 02.10.08
|
 |
|
 |
Wohnort: Greifswald
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 03.02.2009, 13:33
Titel:
|
 |
Zum einen muss man bei diesen Vergleichen aufpassen, da numerische Fehler (im Bereich von 10^-14 matlab intern) schon die Abfrage in die Hose gehen lassen.
Zum Anderen muss bei einer if-Abfrage der komplette Vektor (Bedingung) aus non-zero Elementen bestehen, damit es ein TRUE gibt.
Versuchs mal so:
_________________
>> why
The computer did it.
|
|
|
Lou |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 03.02.2009, 13:40
Titel:
|
 |
ich werde es gleich mal ausprobieren, schonmal danke!
|
|
|
Lou |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 03.02.2009, 13:53
Titel:
|
 |
Es klappt leider immer noch nicht... Es ist das gleiche wie zuvor....
|
|
|
Maddy |

Ehrenmitglied
|
 |
Beiträge: 494
|
 |
|
 |
Anmeldedatum: 02.10.08
|
 |
|
 |
Wohnort: Greifswald
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 03.02.2009, 14:29
Titel:
|
 |
Wie sieht dein Code denn nun aus? Poste einfach mal (unter Verwendung der Code-Umgebung) deinen bisherigen Quelltext.
_________________
>> why
The computer did it.
|
|
|
Lou |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 03.02.2009, 15:37
Titel:
|
 |
Tja ich habe rausgefunden, das meine 13.9000 in long-Format eine 13.899999999999999 ist. somit verstehe ich warum die if-Anweisung nicht funktioniert.
Allerdings hilft mir fix und round auch nicht weiter..
Sagen wir wir haben die Zahl
in Long-Format: x= 23.199999999999999 und
in short-Format:x= 23.2
Wie bekomme ich das denn hin, das ich wirklich nur 23,2 habe auch im long-format?
Denn ich könnte x mal 10 nehmen, dann runden und wieder durch 10 teilen. Aber x*10=232 im Long-Format!!!!
|
|
|
Schrank |

Forum-Century
|
 |
Beiträge: 203
|
 |
|
 |
Anmeldedatum: 10.07.08
|
 |
|
 |
Wohnort: Berlin
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 03.02.2009, 16:01
Titel:
|
 |
Hallo Lou,
warum soll
nicht das gewünschte Ergebnis liefern?
Ansonsten wäre nächstes mal ein sinnvoller Threadname hilfreich.
Gruß Schrank
|
|
|
Lou |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 03.02.2009, 16:17
Titel:
|
 |
Ja auch wieder wahr...
Es hat mich iritiert , dass bei
rauskommt. Aber dennoch es funktioniert.
Vielen Dank für die schnellen Antworten und entschuldigung für den Thread-Namen....
LG Lou[/code]
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|