|
|
Vorhandenes Element in Zeilenvektor nicht ansprechbar |
|
HaKa |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 23.03.2013, 20:53
Titel: Vorhandenes Element in Zeilenvektor nicht ansprechbar
|
|
Hallo zusammen,
ich wende mich an euch mit einem Matlab-Problem, dessen Ursache ich zur Zeit nur auf einen Programmfehler zurückführen kann. Ich hoffe, ihr könnt diese Annahme wiederlegen.
Hintergrund: Ich habe eine Funktion f(x) die ich in einem gegebenen Intervall x (Bspw.: x=1:0.01:5) plotte und deren Ableitung ich schrittweise auswerten will.
x-Werte sind in der Variable x gespeichert, Funktionswerte in der Variable y. Um den Funktionswert an einer bestimmten Stelle auszuwerten benutze ich den logischen Ausdruck y(x==entsprechender x-Wert). Bei bestimmten Stellen bekomme ich jedoch nur einen leeren Rückgabewert u.a. immer bei dem Wert 2.28. Der folgende Screenshot verdeutlicht das Problem:
Das Problem tritt in der Matlab Version 2010a auf und wurde auf 3 unterschiedlichen Rechnern festgestellt.
Hat jemand von euch eine Erklärung für diesen Sachverhalt?
Beste Grüße
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 23.03.2013, 22:03
Titel:
|
|
Hallo,
aufgrund minimaler Rundungsfehler gibt es eben kein Element in dem Vektor, das haargenau 2.28 ist. Du musst dazu bedenken, dass Computer nicht im Dezimal, sondern im Binärsystem arbeiten und dass Zahlen wie 2.28 dort ohnehin nicht exakt dargestellt werden können.
Alternative wäre: suche nach dem Wert, der 2.28 am nächsten liegt:
Weitere Klassiker in dieser Hinsicht:
Andere Programmiersprachen haben übrigens dasselbe Problem.
Grüße,
Harald
|
|
|
HaKa |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 24.03.2013, 19:08
Titel:
|
|
Vielen Dank für deinen Hinweis und deinen Lösungsvorschlag, Harald!
Das Auftreten von Rundungsfehlern bei Wechsel zwischen Binär- und Dezimalsystem ist mir bekannt, nur hätte ich nicht erwartet, dass es es auch bei einem so auf Mathematik foussiertem Programm bzw. Sprache so durchschlägt.
Kann ich das von dir beschriebene Workaround den als gängiges Verfahren bei der Untersuchung von Funktionen ansehen oder gibt es da noch bessere Möglichkeiten, vllt sogar vom Ansatz her?
Beste Grüße
|
|
|
Nras |
Forum-Meister
|
|
Beiträge: 608
|
|
|
|
Anmeldedatum: 21.02.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 7.12.0.635 (R2011a)
|
|
|
|
|
|
Verfasst am: 24.03.2013, 19:34
Titel:
|
|
Hallo,
ansonsten hilft in auch dieser "Trick":
Dann kannst Du den Rest so lassen und eben mit der gewünschten Genauigkeit mit deinen x-Werten arbeiten.
Ob Dir das besser gefällt weiß ich aber auch nicht.
Viele Grüße,
Nras.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 24.03.2013, 21:35
Titel:
|
|
Hallo,
Zitat: |
nur hätte ich nicht erwartet, dass es es auch bei einem so auf Mathematik foussiertem Programm bzw. Sprache so durchschlägt. |
Das wird es bei jeder numerischen Sprache. Wenn du exakte Ergebnisse willst, musst du symbolisch rechnen. Die Möglichkeit dazu bietet aus MATLAB heraus die Symbolic Math Toolbox.
Zitat: |
Kann ich das von dir beschriebene Workaround den als gängiges Verfahren bei der Untersuchung von Funktionen ansehen |
Das würde ich so sehen, ja. Allerdings nicht nur bei über eine Formel gegebenen Funktionen, sondern vor allem auch bei Messdaten.
In Fällen wie deinem sehe ich noch die Möglichkeit, den Index tatsächlich zu errechnen:
Was in der tatsächlichen Anwendung am besten weiterhilft, musst du entscheiden.
Grüße,
Harald
|
|
|
HaKa |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 24.03.2013, 22:03
Titel:
|
|
Vielen Dank für die ausführliche Hilfe, Harald!
Beste Grüße
|
|
|
|
|
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 - 2024
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.
|
|