|
|
Problem bei Interpolation durch TriScatteredInterp() |
|
matlabnoob90 |
Forum-Anfänger
|
|
Beiträge: 45
|
|
|
|
Anmeldedatum: 01.07.13
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 31.07.2013, 10:44
Titel: Problem bei Interpolation durch TriScatteredInterp()
|
|
Hallo zusammen,
wie schon im Titel beschrieben habe ich ein Problem beim Verwenden des Befehls TriScatteredInterp().
Ich habe ein Simulationsmodell in Simulink erstellt, dass mir bei zwei gegebenen Größen eine dritte Größe aus einem Kennfeld ausspucken soll.
Ich habe ca. 22 Stützstellen in 3 Dimensionen und will daraus ein Kennfeld implementieren. Das funktioniert bisher ganz gut.
Problem: Mir ist aufgefallen, dass ich bei Abfrage der Stützstellen, andere Werte für die Stützstelle bekomme. Diese Werte weichen stark vom realen vorgegebenen Wert ab. Das ist leider ein Problem, da die vorgegebenen Stütztstellen definitiv korrekt sein müssen!
Meine Frage: Habt ihr Alternativvorschläge für mein Problem oder wisst ihr woran dieser Fehler liegt!
Vielen Dank schonmal
|
|
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 31.07.2013, 11:09
Titel: Re: Problem bei Interpolation durch TriScatteredInterp()
|
|
Hallo matlabnoob90,
Bitte poste den Matlab-Code, der das Problem reproduziert. Es hört sich nach einem Bug in Deinem Code an und den können wir nicht finden, ohne den Code zu sehen.
Gruß, Jan
|
|
|
matlabnoob90 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 45
|
|
|
|
Anmeldedatum: 01.07.13
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 01.08.2013, 19:30
Titel:
|
|
Hallo Jan,
danke schonmal für die Antwort.
Ich hatte eher ein Fehler durch die Interpolation vermutet, also, dass durch die Interpolation die Stützstellen im dreidimensionalen verschoben werden.
Hier mal mein Code
|
|
|
bastian79 |
Forum-Anfänger
|
|
Beiträge: 13
|
|
|
|
Anmeldedatum: 17.07.13
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 02.08.2013, 11:04
Titel:
|
|
Wie sehen denn deine Stützpunkte aus? Liegen sie exakt auf den Gitterpunkten
???
Wenn nicht wird es natürlich auch nicht die exakten Werte in der Interpolation geben.
Beispiel:
gruß
b
|
|
|
matlabnoob90 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 45
|
|
|
|
Anmeldedatum: 01.07.13
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 02.08.2013, 13:00
Titel:
|
|
|
|
|
hallo danke schonmal,
das Problem ist, dass die Stützstellen ungerade Werte sind, die irgendwo zwischen dem Messgitter liegen.
z.B. eine (frei erfunde) Stützstelle wäre:
n= 1114.1234
Tq= 512,253
P= 0.2345
Davon gibt es ca. 20 Stück und mein Ziel war es aus diesen 20 Werten ein Dreidimensionales Kennfeld zu erzeugen, aus dem ich diese 20 Punkte bei Abfrage wieder abrufen kann, aber zusätzlich die Werte zwischendrin noch erhalten kann. Mich interessieren im Prinzip die Punkte zwischendrin, aber Grundvorraussetzung ist, dass die Stützpunkte erhalten bleiben.
Weißt du, was ich meine?
Ich will ja mit dem Messgitter festlegen, in welchem Bereich ich interpolieren will.
Ist es mögliche den Bereich 1000:2200 (bzw. 0:900)festzulegen, jedoch im Messgitter auch die Stützstellen miteinzubeziehen? Gebe ich nach der Interpolation z.B. einen der Stüztpunkte ein, stimmt der dritte Wert (im Bsp: die Größe P) nicht mehr mit dem gegebenen Wert (hier P=0.2345) überein.)
Dann müsste das nach deiner Erklärung ja funktionieren, oder ???
Vielen Dank schonmal
grüße
|
|
|
matlabnoob90 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 45
|
|
|
|
Anmeldedatum: 01.07.13
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 02.08.2013, 13:04
Titel:
|
|
Ach ja noch was:
Die Stützstellen, die ich Vorgebe beziehe ich aus einer Excelspalte.
|
|
|
matlabnoob90 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 45
|
|
|
|
Anmeldedatum: 01.07.13
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 02.08.2013, 15:18
Titel: Stand der Dinge
|
|
Habe versucht ein Messgiter zu wählen, dass die Stütztstellen beinhaltet.
also
Ergebnis: Geplottetes Kennfeld sieht aus wie ein Haufen Scherben. Also kein Kennfeld mehr erkennbar.
Idee war: Stütztstellen an passender Stelle einzufügen:
das heißt: Bsp: Die Stütztstelle 1234 zwischen 1230 und 1240 einfügen usw.
Frage: Kann man einen Vektor x_zusatz so definieren, dass er alle Werte 1000:10:2200 beinhaltet und an der passenden Stelle die richtigen Stützstellen ohne in diesen Vektor händisch alle Werte zu definieren?
bzw. Alternativvorschläge?
Danke nochmal, ihr seid super
|
|
|
bastian79 |
Forum-Anfänger
|
|
Beiträge: 13
|
|
|
|
Anmeldedatum: 17.07.13
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 02.08.2013, 15:29
Titel:
|
|
im prinzip die richtige Idee. Allerdings das ganze noch sortieren.
|
|
|
matlabnoob90 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 45
|
|
|
|
Anmeldedatum: 01.07.13
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 03.08.2013, 00:39
Titel:
|
|
boar super! danke.
ich werd das morgen mit der interpolation gleich mal
ausprobieren und berichten, ob mir die Stützstellen
ausgegeben werden.
gruß
|
|
|
matlabnoob90 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 45
|
|
|
|
Anmeldedatum: 01.07.13
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.08.2013, 23:30
Titel:
|
|
Hi
Bin das Problem grad angegangen und habe die sortierten Vektoren verwendet.
Das Problem ist, dass ich diese Daten an ein Simulinkmodell (per Lookup-Table) weitergebe und somit die Breakpointvektoren (also x und y-Achse) übereinstimmen müssen.
Kennt ihr euch auch mit Simulink aus?
Ich bekomme eine Fehlermeldung, dass meine Breakpoint vektoren nicht streng monoton steigend sind (da manchmal zweimal hintereinander der Werte 2100 kommt).
Trotzdem mal die Fehlermeldung:
Values of BreakpointsForDimension2 in
'PfadimSimulinkmodell' must be monotonically
increasing. The problem occurs at the number 1123 breakpoint.
Please change the breakpoint data or use the fixedpoint tools
such as Auto Scaling or Fixed-Point Advisor to determine a
different parameter dialog type
Q: Habt ihr Ideen/Vorschläge, wie ich im Lookuptable den Datentyp so ändern kann, dass Matlab nicht mehr rumspackt wegen der strengen Monotonie?
Danke schonmal
|
|
|
bastian79 |
Forum-Anfänger
|
|
Beiträge: 13
|
|
|
|
Anmeldedatum: 17.07.13
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 09.08.2013, 08:09
Titel:
|
|
Dachte du bemerkst selber, dass mit
auch doppelte Werte vorkommen können.
Schau dir mal
an.
Gruß
B
|
|
|
matlabnoob90 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 45
|
|
|
|
Anmeldedatum: 01.07.13
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 09.08.2013, 09:40
Titel:
|
|
War mir klar, dass doppelte Werte vorkommen können,
was mir nicht klar war, ist dass das ein Problem im Simulinkmodell
darstellt
|
|
|
matlabnoob90 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 45
|
|
|
|
Anmeldedatum: 01.07.13
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 01.09.2013, 20:18
Titel:
|
|
Hallo,
Ich habe das Problem inzwischen geklärt.
Die Interpolation nimmt zwar nicht die exakten Werte an den Stützstellen, interpoliert jedoch sinnvolle Werte, um die Stütztstellen herum.
Das Problem bei meiner Abfrage der Werte, lag darin, dass die gefragten Werte genau am Rand der Funktion lagen. Ist der letzte Wert z.B. an Stelle 180 der Interpolationsmatrix, der gefragte Werte jedoch 180.5, dann interpoliert matlab zwischen der an Stelle 180 hinterlegten Information und einer Stelle außerhalb des Kennfelds. Dadurch werden die Werte verfälscht.
Danke nochmal für eure Hilfe.
Liebe Grüße!!!
|
|
|
bastian79 |
Forum-Anfänger
|
|
Beiträge: 13
|
|
|
|
Anmeldedatum: 17.07.13
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 02.09.2013, 07:25
Titel:
|
|
??? MATLAB soll die Werte verfälschen ???
|
|
|
matlabnoob90 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 45
|
|
|
|
Anmeldedatum: 01.07.13
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 02.09.2013, 21:46
Titel:
|
|
Zitat: |
??? MATLAB soll die Werte verfälschen ??? |
Hi bastian79,
verfälschen war wohl falsch formuliert.
Matlab macht nur das, was ich ihm sag, das ist klar.
Ich wollte nur anmerken, dass Matlab bei Randpunkten
(wie oben beschrieben) einen Wert zwischen dem plausiblen
gegebenen Wert und Null wählt und somit diese Punkte
im Randgebiet keine brauchbare z-Information mehr liefern.
Beispiel:
Schrittweite ist 1.
Die 3D-Matrix geht bis maximal Zeile 180.
Hier ist ein Wert (z-information) hinterlegt, z.B. "5".
Nun wird jedoch der Punkt 180.5 abgefragt.
Das heißt Matlab wählt einen Wert der genau zwischen
5 und 0 liegt. In diesem Fall 2.5.
Matlab macht nichts falsch, jedoch ist dieser Wert
für den Betrachter, der einen Wert um 5 rum erwartet
nicht plausibel, bzw. verfälscht.
ich hoffe das war verständlicher
liebste 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 - 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.
|
|