Ich habe Probleme zu verstehen, wie man die bilineare Interpolation in Matlab programmiert. In unserer Aufgabe verwenden wir diese Funktion.Bilineare Interpolation in Matlab (ohne eingebaute Funktionen)
B (x, y) = Z_ (ij) + a * (x - x j) + b * (y - yi) + c * (x - x j) (y - yi)
Wir rebuilding 2 Funktionen, eine, die die Koeffizienten berechnet (was ich bereits getan habe und es gab den 'Prüf' Algorithmus vom Professor) und eine andere Funktion, die die Funktion berechnet. Unten ist der Code, den ich habe. Wir erhalten x, y, z, xi und yi, während a, b, c bereits berechnet wurden.
Mein Problem: Die Funktion läuft, aber gibt eine Matrix zurück, wenn es nur einen Vektor zurückgeben soll. Allerdings gibt es die richtigen Werte in Spalte 1, Zeilen 1 & 2, die mich wirklich verwirrt. Außerdem sind die Werte, die wir erhalten, eine quadratische Matrix (z) und 1x2 x und y Werte, im zweiten Teil des Problems gibt es jedoch eine z = mxn Matrix, die keine quadratische Matrix ist, also ist mein Code isn Ich arbeite nicht dafür. Unten ist mein aktueller Code. Jede Hilfe wäre willkommen, aber ich erwarte nicht, dass Sie mir nur die Antwort geben!
%Given x = [0,1], y=[0,1], z=[0,1;2,4], a = 1, b = 2, c = 1, xi = [0,.5], yi = [0,.5]
function zi = bilinear_eval(x, y, z, a, b, c, xi, yi)
[m,n] = size(z);
for j = 1:length(xi)
for i = length(x)
zi(i,j) = z(j,j) + a*(xi(i) - x(j)) + b*(yi(i) - y(j)) + c*(xi(i) - x(j))*(yi(i) - y(j))
end
end
end
Warum sind die 'Python' oder 'C++' Tags hier? –
Wenn Sie eine Vektorausgabe wünschen, sollten Sie 'zi' nicht mit' i' und 'j' indizieren. – excaza
@taylorswift Ich weiß Python und C++, also nehme ich an, wenn jemand in der Lage ist, es in einem dieser Formate zu beantworten, kann ich auch auf Matlab extrapolieren. Aber ich habe sie für dich entfernt. – ovp