【问题标题】:Matlab Interpolation of an Array数组的 Matlab 插值
【发布时间】:2014-03-20 12:35:08
【问题描述】:

使用下面的数组:

-2,  0
-1,  0.1
 0,  0.4
 2,  0.6
 3,  0.9
 5,  1

我需要能够使用 MatLab 中的函数对其进行插值,以找出 x 的哪些值对应于 y = 0.06, 0.13, 0.58

【问题讨论】:

  • 左列是x值,右列y值吗?
  • 在 Matlab 中做 help interp1
  • 作为百万分之一,更不用说文档本身:MATLAB: interpolate vector的可能副本

标签: arrays matlab interpolation


【解决方案1】:

就这么简单:

A = [-2,  0;
     -1,  0.1;
      0,  0.4;
      2,  0.6;
      3,  0.9;
      5,  1  ]

yi = [0.06, 0.13, 0.58]  

然后:

xi = interp1(A(:,2),A(:,1),yi)

返回:

xi =

   -1.4000   -0.9000    1.8000

你本可以自己发现的;)

【讨论】:

    【解决方案2】:

    您要查找的函数是interp1。您可以以两种形式使用它,如果您想要线性插值,那么您可以简单地使用:

    x  = [0,0.1,0.4,0.6,0.9];
    v  = [-2,-1,0,2,3,5];
    xq = [0.06,0.13,0.58];
    vq = interp1(x,v,xq);
    

    结果

    vq =
    
       -1.4000   -0.9000    1.8000
    

    如果您想要不同类型的插值,请将您想要的类型作为第 4th 参数:

    vq = interp1(v,x,xq,'PCHIP');
    

    结果

    vq =
    
       -1.3185   -0.8534    1.8695
    

    可用的插值方法有:nearestlinearsplinepchipcubic

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-19
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-02
      • 1970-01-01
      相关资源
      最近更新 更多