我已经定义了一个向量[0.11,1,3,4.5,7]
。我还有一个函数f
,其值为[f(0.11),f(1),f(3),f(4.5),f(7)]
。与此同时,我有另一个可能没有固定长度的矢量。其价值和长度由用户决定。为简单起见,假设向量为[4,4.5,5,6]
。我想在编程中做如下:
使用线性近似从给定数据输入获得近似值f(4), f(4.5), f(5) and f(6)
。
据我所知,我可以使用for循环解决问题;但我想知道for循环是否必要。有人可能会想到一种不使用for循环的方法吗?
答案 0 :(得分:5)
我们可以这样做:
我们可以做到避免for循环(以及任何其他循环:) :):
x = [0.11 1 3 4.5 7]'
f_values = [1 5 3 15 0]'
xnew = [4 4.5 5 6]'
fnew = interp1q(x,f_values,xnew)
但还有第二个有趣的方法:适合您的数据。 Matlab有很强的拟合工具。
For example this one。如果你适合它你采取这样的功能:
myf = @(x) here+some+formula
。因此,您可以随时为任何f
获取x
的任何值,而无需任何额外的计算。
如果你知道f
的真正价值,只需创建一个匿名函数:
f = @(x) x.^2
现在您只需输入[4,4.5,5,6]
值并获得结果:
xnew = [4 4.4 5 6]
result = f(xnew)