naja ohne lauffähigs beispiel kann ich das so nicht nachvollzihen. die punkte werden in der reihenfolge verbunden wie sie im vektor vorkommen. deine funltion ist nicht eindeutig. wenn du also deine ordinatenwerte sortierst und diese sortierung dann auf die abszissen werte übernismmst sollte es klappen.
_________________
wie gesagt. für interpolation müssen die werte streng monoton sein. das sind deine x werte nicht. ich weis nicht warum er dir keinen fehler gibt aber das kann ich ohne lauffähiges beispiel nicht nachvollzihen.
Zitat:
Sample points, specified as a row or column vector of real numbers. The values in x must be strictly monotonic and increasing. Furthermore, the length of x must conform to one of the following requirements:
ja, dann liegt es natürlich daran, dass die Werte nicht monoton sind.
Wie könnte ich denn das Problem trotzdem lösen?
Ich möchte einfach zwischen zwei aufeinanderfolgenden Punkten linear interpolieren um die Zwischenräume mit mehreren Datenpunkten zu füllen.
Ich habe auch mal die Daten für latitide und Longitude angehängt.
genau so wie du oben gepostet hast. der code liefert das gewünschte ergebniss.
das bild was du oben gepostet hast ist aber nicht das bild das zum code gehört.
in deinem geposteten bild sind lon und lat vertauscht.
in deinem code hingegen ist alles richtig und er macht auch das was er soll
_________________
hmm auf anhieb fällt mir da auch nichts gutes ein. ich brainstorme mal ein wenig:
2 punkte nehmen. sortieren. interpolieren. zurück tauschen. monotie überprüfen. sonst argumente und funktionswerte tauschen. interpolieren. wieder zurück tauschen. 2d interpolation mit zwert als markierung ob ein wert vorhanden ist.
... ma gucken ob mir noch was besseres einfällt..
allerdings verstehe ich nicht warum das das überhaubt machen willst. lineare interpolation liefert dir ja keine neuen informationen. dir wird damit ja nur eine genauigkeit vorgetäuscht die nicht da ist. und beim plotten werden die punkte eh linear verbunden. du würdest also keinen unterschied erhalten.
_________________
way_length = sum(~isnan(lon(way,[1:end]))==1);
for k=1:way_length-1
lon_q =[min(lon(way,[k:k+1])):0.3:max(lon(way,[k:k+1]))];
lat_q = interp1(lon(way,[k:k+1]),lat(way,[k:k+1]),lon_q,'spline');
hold on
plot(lon_q,lat_q,'r.')
zuerst würde ich mal nicht den index im namen verstecken. für sowas sind cellarrays da zb.
ich würde dann ein nan array mit der größten dimension erstellen und dann mit ner schleifen die vektoren da reinlegen.
_________________
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.