Matlab "interp2" problem bezüglich NaN an Kanten
Bin ich ein bisschen fest auf eine einfache übung und würde schätzen etwas Hilfe.
Ich versuche zu tun, einige einfache 2D-interpolation mit der "interp2" - Funktion in Matlab für eine variable 'tmin' der dimension [15x12]:
lat = 15:1.5:32;
lon = 70:1.5:92;
lat_interp = 15:1:32;
lon_interp = 70:1:92;
[X,Y] = meshgrid(lat,lon);
[Xi,Yi] = meshgrid(lat_interp,lon_interp);
tmin_interp = zeros(length(lon_interp),length(lat_interp),Num_Days);
tmin_interp(:,:) = interp2(X,Y,tmin(:,:),Xi,Yi,'linear');
Dieser code führt in der letzten Zeile und letzten Spalte der tmin_interp werden NaNs, d.h.:
tmin_interp(23,1:18) ==> NaN
tmin_interp(1:23,18) ==> NaN
Weiß jemand, was ich tun könnte falsch? Bin ich ein einfacher Fehler mit Bezug auf die interpolation setup? Vielen Dank für Ihre Zeit.
InformationsquelleAutor FoxRyerson | 2011-09-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der Grund, Sie sind
nan
s ist, dass es keine Daten vor und nach dem Gitter zu interpolieren. Lineare interpolation verwendet den Gradienten des Feldes an derXi,Yi
, um abzuschätzen, wird der Wert an diesem Punkt. Wenn es nichts gibt, entweder Seite, kann es nicht.Können Sie
extrapval
- parameter zu extrapolieren außerhalb derX,Y
Sie angeben. Fügen Sie einfach den parameter0
nach'linear'
:Diese wird null für die Punkte 'auf der Kante'. Es ist jedoch wahrscheinlich, dass für Punkte außerhalb, Sie können fallen, einige default-Wert, wie null. Um dies zu tun, können Sie hinzufügen von Nullen vor und nach
tmin
:(noch nicht überprüft, aber Sie bekommen die Idee.) Sie müssen auch hinzufügen, dass einige pre - und post-Werte zu
X
undY
.Verwenden Sie einen anderen Wert, wenn die 'außerhalb' oder 'default' - Wert von tmin.
PS: warum sind Sie bei der Erstellung
tmin_interp
als 3-dimensional?InformationsquelleAutor Sanjay Manohar
Oder einfach nur versuchen:
zu verhindern, daß der Wert 0.
HTH!
InformationsquelleAutor Oliver Amundsen