有没有使用for-loop找到近似值的建议?

时间:2017-05-17 13:55:31

标签: matlab math vectorization

我已经定义了一个向量[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循环的方法吗?

1 个答案:

答案 0 :(得分:5)

我们可以这样做:

  1. 我们可以做到避免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)
    
  2. 但还有第二个有趣的方法:适合您的数据。 Matlab有很强的拟合工具。 For example this one。如果你适合它你采取这样的功能: myf = @(x) here+some+formula。因此,您可以随时为任何f获取x的任何值,而无需任何额外的计算。

  3. 如果你知道f的真正价值,只需创建一个匿名函数:

    f = @(x) x.^2
    

    现在您只需输入[4,4.5,5,6]值并获得结果:

    xnew = [4 4.4 5 6]
    result = f(xnew)