|
HerrDaniel |

Forum-Anfänger
|
 |
Beiträge: 17
|
 |
|
 |
Anmeldedatum: 01.02.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.07.2013, 05:40
Titel: min und max
|
 |
Hallo,
folgendes Problem:
ich versuche die Zeilen vom Maximum und Minimum herauszufinden.
Ich benutze dafür:
[maxwerte, maxzeilen] = max(a(b==3));
[minwerte, minzeilen]=min(a(a~=0 & b==3));
die werte von max und min scheinen richtig aber wenn ich dann in den a Vektor in die Zeile die das Ergebnis sagt schaue ist es manchmal richtig und manchmal falsch. Ich benutze verschiedene Vektoren von a!
Kann mir einer sagen warum?
|
|
|
|
|
Andreas Goser |

Forum-Meister
|
 |
Beiträge: 3.654
|
 |
|
 |
Anmeldedatum: 04.12.08
|
 |
|
 |
Wohnort: Ismaning
|
 |
|
 |
Version: 1.0
|
 |
|
|
 |
|
Verfasst am: 19.07.2013, 08:20
Titel:
|
 |
2 numerische Vermutungen:
Die Maxima max(a(b==3)) sind scheinbar gleich, numerisch ist aber ein unerwarteter Punkt doch EPS größer.
b==3 ergibt unerwartete Ergebnisse weil das bei Vergleichen zwischen DOUBLE Zahlen nun mal so passieren kann. Sind denn b alles ganzzahlige Werte? Kann man die dann nicht als Integervariablen definieren?
Andreas
|
|
|
HerrDaniel |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 17
|
 |
|
 |
Anmeldedatum: 01.02.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.07.2013, 09:02
Titel:
|
 |
also b sind nur ganze zahlen von 0 bis 6 aber als double Wert gespeichert.
Wie definiere ich die B zahlen als Integer? muss ich dann a auch als integer ändern?
a sind zwischen 0 bis 200 also double wert und mit einem punkt getrennt z.B. 134.8800
Aber wieso ist der max Wert richtig aber wenn ich dann in die Zeile gucke steht was anderes.
a und b haben jeweils nur eine Spalte aber dafür 100000 Zeilen.
|
|
|
Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 19.07.2013, 09:30
Titel:
|
 |
lauffähiger code der den fehler reproduziert wäre nicht schlecht.
|
|
|
HerrDaniel |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 17
|
 |
|
 |
Anmeldedatum: 01.02.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.07.2013, 09:53
Titel:
|
 |
der Code ist doch in meiner Frage!!
die Vektoren hab ich gerade beschrieben.
|
|
|
Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 19.07.2013, 10:07
Titel:
|
 |
ja und dein oben gelieferte code funktioniert bei mir einwandfrei und liefert genau das was ich erwarte. darum gehe ich davon aus das du einen fehler bei der weiteren benutzung machst. deshalb frage ich nach code der den fehler reproduziert. is ja nicht so das ich dich nur damit nerfen will ^^
wahrscheinlich versuchst du maxzeilen in den originalvektor einzusetzen. du hast aber maxzeilen von einem temporären vektor a(b==3) bestimmt und auf diesen bezihen sich auch die zeilen. sowas ist aber nur ersichtlich wenn du code postest der den fehler auch wirklich reproduziert. sonst rate ich hier nur rum
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 19.07.2013, 10:11
Titel: Re: min und max
|
 |
Hallo HerrDaniel,
Zunächst kann man in 99.999% der Fälle davon ausgehen, dass das von Matlab geliferte Ergebnis nicht falsch ist. Bugs von so grundlegenden Funktionen wären nämlcih längst gefixt worden.
Zitat: |
die werte von max und min scheinen richtig aber wenn ich dann in den a Vektor in die Zeile die das Ergebnis sagt schaue ist es manchmal richtig und manchmal falsch. |
So weit ich die ungefähre Beschreibung verstehe, suchst Du in den Zeilen von "a". Die werden aber gar nicht im Programm gefunden, sondern nur die Zeilen von "a(b==3)". "maxzeilen" enthält die Zeilen-Index bzgl dieses eventuell gekürzten Vektors. Wenn also irgendwo vor dem Maximum ein b ~= 3 ist, wird den Index in bezug auf "a" den falschen Wert liefern.
Dies würde auf Anhieb klarer werden, wenn Du den relevanten Code postest andstatt zu beschreiben, was er erreichen soll. Die Bugs liegen meistens in der Implementierung und nicht in der Absicht des Autors.
Gruß, Jan
|
|
|
HerrDaniel |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 17
|
 |
|
 |
Anmeldedatum: 01.02.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.07.2013, 10:28
Titel:
|
 |
a und b werden über die import Funktion in das Programm hinein geladen.
mehr Code gibt es nicht.
Das Problem ist jetzt das in Zeile 239209 73 steht und nicht 159.5000!
Wieso?
|
|
|
Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 19.07.2013, 10:31
Titel:
|
 |
Winkow hat Folgendes geschrieben: |
wahrscheinlich versuchst du maxzeilen in den originalvektor einzusetzen. du hast aber maxzeilen von einem temporären vektor a(b==3) bestimmt und auf diesen bezihen sich auch die zeilen. |
hast du gelesen was wir geschrieben haben ?
Zitat: |
Das Problem ist jetzt das in Zeile 239209 73 steht und nicht 159.5000! |
ich wette du guckst im falschen vektor. das ist aber aus deinem code nicht ersichtlich.
|
|
|
HerrDaniel |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 17
|
 |
|
 |
Anmeldedatum: 01.02.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.07.2013, 10:35
Titel:
|
 |
ich schaue in den a Vektor dort will ich doch wissen in welcher Zeile der Wert steht.
der Vektor maxzeilen wird doch nur erzeugt und dann benutze ich ihn doch überhaupt nicht.
|
|
|
HerrDaniel |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 17
|
 |
|
 |
Anmeldedatum: 01.02.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.07.2013, 10:37
Titel:
|
 |
ich benutze keinen code zum nachschauen. ich schaue in den Workspace in den Vektor rein und scrolle zur der Zeile!
|
|
|
Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 19.07.2013, 10:38
Titel:
|
 |
sihst du und jan und ich haben dich schon auf den fehler hingewiesen den du begehst.
winkow hat Folgendes geschrieben: |
wahrscheinlich versuchst du maxzeilen in den originalvektor einzusetzen. du hast aber maxzeilen von einem temporären vektor a(b==3) bestimmt und auf diesen bezihen sich auch die zeilen. |
wenn du den index im orignal vektor a willst musst du den erst noch bestimmen zb mit
.
|
|
|
HerrDaniel |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 17
|
 |
|
 |
Anmeldedatum: 01.02.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.07.2013, 10:40
Titel:
|
 |
gut ich verstehe es nicht, könntet ihr bitte nochmal meinen Fehler erklären und vor allem wie ich es richtig machen muss!
danke
|
|
|
HerrDaniel |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 17
|
 |
|
 |
Anmeldedatum: 01.02.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.07.2013, 10:43
Titel:
|
 |
ok den Fehler habe ich gerade selber verstanden. könnt ihr mir auch die Lösung verraten wie ich jetzt wieder die Zeile finde die ich eigentlich suche um damit weiter zu arbeiten!?
|
|
|
Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 19.07.2013, 10:45
Titel:
|
 |
du bestimmst hier den maxwert und die maxzeilen vom vektor a(b==3).
a(b==3) ist aber nicht a sondern in diesem fall eine temporäre matrix mit nur den einträgen aus a bei denen b==3 ist. das haben jan und ich auch schon gesagt.
was du meinst ist
deshalb haben jan und ich auch so oft nachgefragt weil dein oben beschriebener code genau das macht was er soll. du aber danach deinen fehler machst. das ist aber nicht ersichtlich aus deinen ersten beschreibungen. darum habe ich nach code gefragt der den fehler reproduziert.
|
|
|
|
Gehe zu Seite 1, 2 Weiter
|
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.
|
|