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 Fehler

 

giftmischen
Forum-Anfänger

Forum-Anfänger



Beiträge: 42
Anmeldedatum: 20.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.08.2011, 13:12     Titel: MATLAB macht Fehler
  Antworten mit Zitat      
Hallo,
ich versuche eine Datenreihe in verschieden Klassen einzuteilen und habe dafür diesen Code geschrieben

Code:

RPS_KAT{1,1}=HOM_RPS(HOM_RPS(:,1)<0.1,1:2);
RPS_KAT{1,2}=HOM_RPS(HOM_RPS(:,1)>=0.1 &HOM_RPS(:,1)<0.2 ,1:2);
RPS_KAT{1,3}=HOM_RPS(HOM_RPS(:,1)>=0.2 &HOM_RPS(:,1)<0.3 ,1:2);
RPS_KAT{1,4}=HOM_RPS(HOM_RPS(:,1)>=0.3 &HOM_RPS(:,1)<0.4 ,1:2);
RPS_KAT{1,5}=HOM_RPS(HOM_RPS(:,1)>=0.4 &HOM_RPS(:,1)<0.5 ,1:2);
RPS_KAT{1,6}=HOM_RPS(HOM_RPS(:,1)>=0.5 &HOM_RPS(:,1)<0.6 ,1:2);
RPS_KAT{1,7}=HOM_RPS(HOM_RPS(:,1)>=0.6 &HOM_RPS(:,1)<0.7 ,1:2);
RPS_KAT{1,8}=HOM_RPS(HOM_RPS(:,1)>=0.7 &HOM_RPS(:,1)<0.8 ,1:2);
RPS_KAT{1,9}=HOM_RPS(HOM_RPS(:,1)>=0.8 &HOM_RPS(:,1)<0.9 ,1:2);
RPS_KAT{1,10}=HOM_RPS(HOM_RPS(:,1)>=0.9 &HOM_RPS(:,1)<1.0 ,1:2);
RPS_KAT{1,11}=HOM_RPS(HOM_RPS(:,1)>=1.0 ,1:2);
 

HOM_RPS ist im Anhang.

Leider macht Matlab einen fehler und legt mir in RPS_KAT{1,8} ein Wertepaar mit HOM_RPS(:,1)=0.8 ab. Weiß jemand warum?

Danke schon mal für euere Mühen.
giftmischen

HOM_RPS.txt
 Beschreibung:

Download
 Dateiname:  HOM_RPS.txt
 Dateigröße:  28.73 KB
 Heruntergeladen:  296 mal
Private Nachricht senden Benutzer-Profile anzeigen


zuBesuch

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.08.2011, 13:27     Titel:
  Antworten mit Zitat      
Hallo,
ich kann den Fehler nicht nachvollziehen.
Mit den von dir angehängten Daten (Komma durch Punkt ersetzt und per dlmread eingelesen) funktioniert es wie erwartet.
Sind das die "echten" Daten ?
Klingt als ob es eventuell ein Rundungsfehler ist, Matlab zeigt zum Beispiel
0.7999999 im Standardformat als 0.8000 an, obwohl es intern genauer ist.
Beim speichern der Daten in der Textdatei kann diese Rundung je nach Format auch übernommen worden sein, deswegen die Frage, ob es die "echten" Daten sind.
 
giftmischen
Themenstarter

Forum-Anfänger

Forum-Anfänger



Beiträge: 42
Anmeldedatum: 20.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.08.2011, 13:45     Titel:
  Antworten mit Zitat      
das sind genau die Daten! hatte sie nur in Excel einegfügt um den Fehler zusuchen und dann in die Text-Datei, deswegen die Kommas.
Private Nachricht senden Benutzer-Profile anzeigen
 
zuBesuch

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.08.2011, 14:05     Titel:
  Antworten mit Zitat      
Und was ist mit eventuellen Rundungsfehlern, bzw Ungenauigkeiten in der Darstellung von Zahlen in double Werten?


Beispiel:

Code:

a=0.1+0.1+0.1

a =

    0.3000

a==0.3

ans =

     0

a>0.3

ans =

     1

% 0.1+0.1+0.1 ist also größer als 0.3, hängt mit der internen Darstellung der Zahlen zusammen, wurde hier auch schon öfter diskutiert-> Suche

 


Die Frage ist also, wie diese Werte enstanden sind (aus File eingelesen, ausgerechnet..)

Du könntest die Werte auf die erste Kommastelle runden, dass würde dein Problem vielleicht lösen:

Code:

b=round(10*a)/10;

b==0.3

ans =

     1

 
 
giftmischen
Themenstarter

Forum-Anfänger

Forum-Anfänger



Beiträge: 42
Anmeldedatum: 20.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.08.2011, 14:33     Titel:
  Antworten mit Zitat      
sind berechnet worden.
ich versuchs mal mit dem runden! Danke
Private Nachricht senden Benutzer-Profile anzeigen
 
giftmischen
Themenstarter

Forum-Anfänger

Forum-Anfänger



Beiträge: 42
Anmeldedatum: 20.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.08.2011, 14:43     Titel:
  Antworten mit Zitat      
wie runde ich auf die erste stelle nach dem Komma?
das mit dem *10/10
geht nicht, weil er bei
Code:

round(Hom_RPS*10)/10
 


erst auf 0 rundet und dann *10 --> 0*10=0
Private Nachricht senden Benutzer-Profile anzeigen
 
giftmischen
Themenstarter

Forum-Anfänger

Forum-Anfänger



Beiträge: 42
Anmeldedatum: 20.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.08.2011, 14:49     Titel:
  Antworten mit Zitat      
Hab´s herausgefunden und es klappt.
Danke für die Hilfe!
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.