У меня возникли проблемы с пониманием того, как закодировать билинейную интерполяцию в Matlab. В нашем задании мы используем эту функцию;Билинейная интерполяция в Matlab (без встроенных функций)
В (х, у) = z_ (Ij) + а * (х - Xj) + Ь * (у - уг) + с * (х - Xj) (у - уг)
Мы» re build 2 функции, которые вычисляют коэффициенты (которые я уже сделал, и он передал алгоритм «проверки» от профессора) и другую функцию, которая вычисляет функцию. ниже - код, который у меня есть. Нам даны x, y, z, xi и yi, а a, b, c уже вычислены.
Моя проблема: Функция запускается, но возвращает матрицу, когда она должна возвращать только вектор. Однако он возвращает правильные значения в столбце 1, строки 1 & 2, что меня действительно сбивает с толку. Кроме того, значения, которые мы даем, представляют собой квадратную матрицу (z) и значения 1x2 x и y, однако во второй части проблемы мы представляем матрицу z = mxn, которая не является квадратной матрицей, поэтому мой код isn Не работаю для этого. Ниже мой текущий код. Любая помощь будет оценена, но я не ожидаю, что вы просто дадите мне ответ!
%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
Почему здесь находятся теги 'python' или' C++? –
Если вам нужен векторный вывод, вы не должны индексировать 'zi' как с' i', так и 'j'. – excaza
@taylorswift Я знаю python и C++, поэтому я предполагаю, что кто-то может ответить на него в любом из этих форматов, я также могу экстраполировать Matlab. Но я удалил их для вас. – ovp