|
|
Interpolation von ziemlich vielen Daten |
|
Poncho |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.11.2010, 19:49
Titel: Interpolation von ziemlich vielen Daten
|
|
|
|
|
Hallo,
Ein paar Fragen zu den Interpolationsmöglichkeiten von Matlab:
Die Situation: ich habe ca. 5800 Wertetripel in einer Liste vorliegen die zusammen die Isolinien eines digitalisierten Kennfeldes wiedergeben (das Kennfeld sieht prinzipiell so aus). In der Endanwendung sollen 2 Werte (x und y) vorgegeben werden und der zugehörige dritte Wert (z) soll ausgegeben werden, und zwar über den gesamten Wertebereich, also auch zwischen den Isolinien.
Meine Idee war eine Matrix zu erstellen und sich jeden Wert über eine Look-Up Tabelle ausgeben zu lassen.
Dazu ein paar Fragen:
1. Wenn ich die Matrix erstelle sind das ca 75000 Einträge. Die meisten davon sind 0, weil dort eben keine Werte bekannt sind.
Ist es möglich, statt einer 0 auch gar nichts in eine Zelle schreiben zu lassen?
2. Ist es überhaupt möglich aus 5800 Werten alle anderen 75000 Werte zu interpolieren? Welche Methode wäre am besten geeignet?
3. Kann man eine Look-Up Tabelle erstellen die nicht eine Matrix-Form sondern eine Tabellenform mit den drei Spalten x,y und z hat? Dann könnte ich einfach nur die 5800 Wertetripel nehmen und den Rest soll mir Matlab interpolieren.
Wenn das geht, wie stell ich das an?
Wie ihr bestimmt merkt bin ich kein Profi was Matlab angeht, aber ich hoffe dass ihr mir ein paar Hinweise geben könnt.
Beste Grüße!
|
|
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 17.11.2010, 21:06
Titel: Re: Interpolation von ziemlich vielen Daten
|
|
|
|
|
Hallo Poncho,
Zitat: |
1. Wenn ich die Matrix erstelle sind das ca 75000 Einträge. Die meisten davon sind 0, weil dort eben keine Werte bekannt sind.
Ist es möglich, statt einer 0 auch gar nichts in eine Zelle schreiben zu lassen? |
Dann ist 0 also auf keinen Fall ein regulärer Wert?
Es ist auf jeden Fall nicht möglich gar nichts in eine "Zelle" zu schreiben - zumindest solange Du nicht von einem Cell-Array sprichst. Ein Cell-Array eignet sich aber sehr schlecht zum Rechnen.
Zitat: |
2. Ist es überhaupt möglich aus 5800 Werten alle anderen 75000 Werte zu interpolieren? Welche Methode wäre am besten geeignet? |
INTERP2 oder GRIDDATA. Ob das kubisch, linear oder per nearest neighbor Method interpoliert wird, musst Du entscheiden. Das hängt ganz von der Fragestellung ab.
Zitat: |
3. Kann man eine Look-Up Tabelle erstellen die nicht eine Matrix-Form sondern eine Tabellenform mit den drei Spalten x,y und z hat? Dann könnte ich einfach nur die 5800 Wertetripel nehmen und den Rest soll mir Matlab interpolieren. |
Ganz genau! Das ist die richtige Idee. Lies mal die Hilfe-Texte von INTERP2 und GRIDDATA.
Gruß, Jan
|
|
|
Poncho |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.11.2010, 21:34
Titel: Re: Interpolation von ziemlich vielen Daten
|
|
|
|
|
Hi,
Zitat: |
INTERP2 oder GRIDDATA. Ob das kubisch, linear oder per nearest neighbor Method interpoliert wird, musst Du entscheiden. Das hängt ganz von der Fragestellung ab. |
Das Ziel ist wie gesagt die bestmöglichen Interpolationswerte zu bekommen. Ich werde einfach ausprobieren was die besten Ergebnisse liefert.
Zitat: |
Lies mal die Hilfe-Texte von INTERP2 und GRIDDATA. |
ok, dann mal sehen ob ich das richtig verstanden habe, Korrekturen - wenn nötig - erwünscht!
ZI = griddata(x,y,z,XI,YI) bedeutet dass aus den nicht einheitlich verteilten Inputs x,y,z (= meine in der Tabelle vorliegenden Werte) eine Matrix ZI interpoliert wird. Dabei sind vermutlich x,y und z jeweils Vektoren.
Was spielt aber XI und YI für eine Rolle? Und was macht die Alternative TriScatteredInterp anders?
Außerdem: Wie kann ich die Schrittweite der Interpolation festlegen?
interp2 würde für meine Werte nicht funktionieren, wenn sie nicht gleichmäßig steigend (monoton) sind, korrekt?
Verstehe ich es richtig dass in beiden Fällen eine Matrix erstellt wird, die ich dann in Simulink als 2D-Look-Up-Table verknüpfen kann?
Besten Dank!
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 18.11.2010, 14:29
Titel: Re: Interpolation von ziemlich vielen Daten
|
|
Hallo Poncho,
Zitat: |
Was spielt aber XI und YI für eine Rolle? Und was macht die Alternative TriScatteredInterp anders?
Außerdem: Wie kann ich die Schrittweite der Interpolation festlegen? |
Genau. XI und YI legen die Schrittweite der Ausgabe fest: das sind die Punkte, zu denen du ZI berechnet haben möchtest.
Welche Interpolationsmethode "am besten" ist, kann man eigentlich nur physikalisch klären. Wenn man z.B. die Höhe eines Lego-Stein-Gebirges misst, ist die "nearest" Method logisch, weil sich die Höhe der Steine nicht kontinuierlich ändern kann. Wenn man aber die Höhe von Meereswellen misst, ist eine bicubische Bestimmung der Höhe naheliegender. Wenn Du eine wissenschaftliche Arbeit verfasst, musst Du unbedingt begründen, warum Du eine bestimmt Methode ausgewählt hast.
Gruß, Jan
|
|
|
Poncho |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 18.11.2010, 16:13
Titel:
|
|
|
|
|
Hi Jan, danke für deine Mühe!
Zitat: |
Genau. XI und YI legen die Schrittweite der Ausgabe fest: das sind die Punkte, zu denen du ZI berechnet haben möchtest. |
Die Syntax mit der Schrittweite verstehe ich noch nicht ganz.
Angenommen mein Wertebereich geht insgesamt für x von 0:10 und für y von 0:1.
Für x,y und z sind aber z.B. jeweils nur 6 Werte vorhanden, in nicht-gleichen Abständen. Das könnte ganz willkürlich z.B. so aussehen:
x....y....z
0....0....0
2....0,1.100
2,7.0,3.120
4,1.0,2.130
5,3.0,6.135
9....0,8.170
Am Ende möchte ich eine Look-Up Table (= die Interpolierte Matrix ZI) mit x in 10er Schritten und mit y in 0,1er Schritten haben, also eine 10x10 Matrix. Jedem Wertepaar ist dann ein z zugeordnet (= der Zelleninhalt).
Dann würde also der Befehl ZI = griddata(x,y,z,XI,YI) so aussehen:
[i]ZI = griddata( x, y, z, XI(0,1,10), YI(0,0.1,1) )
Korrekt?
Leider habe ich selber kein Matlab hier zu Hause und kann's deswegen nicht direkt ausprobieren. Muss warten bis ich wieder Zugang zu einem entsprechenden Rechner habe...
|
|
|
Poncho |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 18.11.2010, 16:16
Titel:
|
|
|
|
|
Hi Jan, danke für deine Mühe!
Zitat: |
Genau. XI und YI legen die Schrittweite der Ausgabe fest: das sind die Punkte, zu denen du ZI berechnet haben möchtest. |
Die Syntax mit der Schrittweite verstehe ich noch nicht ganz.
Angenommen mein Wertebereich geht insgesamt für x von 0:10 und für y von 0:1.
Für x,y und z sind aber z.B. jeweils nur 6 Werte vorhanden, in nicht-gleichen Abständen. Das könnte ganz willkürlich z.B. so aussehen:
x....y....z
0....0....0
2....0,1.100
2,7.0,3.120
4,1.0,2.130
5,3.0,6.135
9....0,8.170
Am Ende möchte ich eine Look-Up Table (= die Interpolierte Matrix ZI) mit x in 10er Schritten und mit y in 0,1er Schritten haben, also eine 10x10 Matrix. Jedem Wertepaar ist dann ein z zugeordnet (= der Zelleninhalt).
Dann würde also der Befehl ZI = griddata(x,y,z,XI,YI) so aussehen:
[i]ZI = griddata(x,y,z,XI,YI)
mit
XI = [0, 1, 10]
YI = [0, 0.1, 1]
und x, y, z entsprechend der Tabelle (s.o.)
Ist das korrekt?
Leider habe ich selber kein Matlab hier zu Hause und kann's deswegen nicht direkt ausprobieren. Muss warten bis ich wieder Zugang zu einem entsprechenden Rechner habe...
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 24.11.2010, 01:28
Titel:
|
|
Hallo Poncho,
Zitat: |
XI = [0, 1, 10]
YI = [0, 0.1, 1]
|
Fast.
Gruß, Jan
|
|
|
|
|
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.
|
|