ich versuche eine Interpolation einer 2D Fläche und habe mich dabei eigentlich sehr nahe am Beispiel gehalten, dennoch funktioniert es bei mir leider nicht.
Beispiel Hilfe:
Code:
[X1,X2] = ndgrid((-5:1:5));
R = sqrt(X1.^2 + X2.^2)+ eps;
V = sin(R)./(R);
Die Idee ist das ich mir aus meinen Daten eine Fläche aus 4 Punkten aufspanne und jeder dieser Punkte hat eine bestimmte Höhe (value). Nun soll durch interpn die Fläche "aufgefüllt" werden durch eben die interpolierten Datenpunkte. Da ich ja nur sehr wenige Datenpunkte habe, soll die Interpolation linear erfolgen. Leider bricht interpn immer wieder ab mit dem folgenden Fehlercode:
Code:
Error using griddedInterpolant
The grid was created from grid vectors that were not strictly monotonic
increasing.
Error in interpn(line148)
F = griddedInterpolant(X{:}, V, method,extrap);
Weiß jemand was ich falsch mache? Mir ist so leider nicht klar welcher Wert sich bei mir nicht linear ändert, die interpolierten X und Y Werte tuen es auf jeden Fall.
Die neue Frage ist jetzt, warum dreht sich mein interpoliertes Bild?? Also warum muss ich in interpn die "Z1" und "Z2" vertauschen damit das richtige Bild bei raus kommt?
Nach dem interpolieren der Messdaten sehe ich, dass die interpolierte Matrix (das wäre oben das Vq) fast nur aus NaN besteht. Weiß jemand woran das liegt? Gibt es eine Obergrenze für die Interpolation? Momentan will ich von einem 101x101 Bild auf ein 1536x1536 Bild interpolieren.
größer werden. Daran ist auch nichts falsch, nur müssen die Grenzen stets gleich bleiben.
1D Beispiel:
Vektor A geht von 17 bis 27 und hat die Länge 100 (100 Datenpunkte). Jetzt will ich auf Vektor B interpolieren der die Länge 1000 haben soll. Für das "Grid" müssen die Grenzen 17 und 27 eingehalten werden, da ja weitere Punkte zwischen den bisherigen Datenpunkten berechnet werden sollen.
Ich hingegen habe außenrum gedacht und dem Vektor B eine neue Länge zugeordnet (hier z.B. von 17 bis 117).
Es wurde zwar etwas berechnet, aber es konnte eben nicht für alle Punkte interpoliert werden. Deswegen war die neue Matrix fast ausschließlich mit "NaN" aufgefüllt.
Nochmal in Code gefasst worauf es ankommt am obigen Beispiel:
hallo marvin
das was du meinst ist extrapolieren. das kann nicht jeder befehl.
in deinem fall willst du ja auch nicht extrapolieren. hast es aber aus versehen versucht. darum die nans. manche befehle können das aber. griddata zb in der aktuellen version glaube ich. bin mir da aber nicht zu 100% sicher.
_________________
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
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.