通过插值进行任意采样

时间:2013-02-19 15:59:35

标签: matlab interpolation spline cubic

我有任意点(8192,4678,1087.2,600,230.4等),我想在其他定义点(100,500.3,802,2045,4399.5125等)进行插值和重采样。

我尝试了三次样条插值,但它使用了稳定的阶跃采样,并且根据阶跃采样,它可能无法生成我需要的值。

你会怎么做?

3 个答案:

答案 0 :(得分:1)

这完全取决于潜在的物理现象。插值和填充之间有一条细线。

  • 我可能会先upsample& filter直到我以固定的采样率获得有意义的信号。

  • 然后我会用一些插值方法估算目标点的信号。

答案 1 :(得分:1)

如果您的积分是x1=[...]y1=[...],并且您希望评估样条线x2=[...]的新基数,那么您

y2 = spline(x1,y1,x2)

**示例**

x1 = [0,2,4,6,8].'
y1 = [24,25,22,14,6].'

x2 = [2,2.5,3,3.5,4].'
y2 = spline(x1,y1,x2)

    y2 =

       25.0000
       24.7227
       24.1563
       23.2617
       22.0000

plot

答案 2 :(得分:0)

我建议你考虑倒退。

不是生成很多点并且希望你需要的点在那里,而是计算插值的公式(可能是分段线性或更复杂的)并在所需的点评估函数。

假设您有x = [1 2 3 4 10]y = [11 22 13 24 11],您在第6点的线性插值将是:

24+(6-4) * (11-24) / (10-4) 

要概括这一点应该不难。