【发布时间】:2016-11-10 17:52:16
【问题描述】:
我在理解如何在 Matlab 中编写双线性插值时遇到了一些麻烦。我们的任务让我们使用这个函数;
B(x,y) = z_(ij) + a*(x - xj) + b*(y - yi) + c*(x - xj)(y - yi)
我们正在构建 2 个函数,一个计算系数(我已经完成了,它通过了教授的“检查”算法)和另一个计算函数的函数。下面是我的代码。 我们得到了 x,y,z,xi, 和 yi,而 a,b,c 已经被计算出来了。
我的问题:该函数运行但在它应该只返回一个向量时返回一个矩阵。但是,它确实在第 1 列、第 1 行和第 2 行返回了正确的值,这让我很困惑。此外,我们给出的值是方阵 (z) 和 1x2 x 和 y 值,但是,在问题的第二部分中,我们给出了一个不是方阵的 z = m x n 矩阵,所以我的代码是不为此工作。以下是我当前的代码。任何帮助将不胜感激,但我不希望您只给我答案!
%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++标签? -
如果你想要一个矢量输出,那么你不应该同时使用
i和j来索引zi。 -
@taylorswift 我知道 python 和 c++,所以我假设如果有人能够以其中任何一种格式回答它,我也可以推断到 Matlab。但我为你删除了它们。
-
我绝对意识到@excaza,但是,如果我简单地使用 i OR j,它只是覆盖了之前的任何内容,并且给了我不正确的值。我暂时使用这个索引来“查看”函数在所有迭代中返回的内容
-
@ovp 这是关于算法或编码的问题吗?
标签: matlab math interpolation