【问题标题】:Create new values using Interpolation in Matlab在 Matlab 中使用插值创建新值
【发布时间】:2018-03-12 20:55:49
【问题描述】:

我有一个向量 x=[7 8 8 8...] 和对应的向量 y=[13 14 15 16...] ,它们给出我的一些观点,如下图所示

现在我想在每对给定点之间创建两个(或通常 N 个)新点。我认为这应该使用插值来完成,但我还没有找到可以使用的东西在这个情况下。

结果应该是这样的:

x= [ 7 7.4 7.7 8 8 8 8...] ,

y=[ 13 13.3 13.8 14 14.2 14.5 15...]

【问题讨论】:

  • 线性插值是否足够?

标签: matlab interpolation


【解决方案1】:

要使用的函数是interp1,本例中例如:

N=3;
x=[7 8 8 9];
y=[7 10 15 17];
originalSpacing=1:length(x);
finalSpacing=1:1/N:4; 

xx=interp1(originalSpacing,x,finalSpacing);
yy=interp1(originalSpacing,y,finalSpacing);

将产生新的插值序列 xx 和 yy

xx = [7 7.3333 7.6667 8 8 8 8 8.3333 8.6667 9]

yy = [7 8 9 10 11.6667 13.3333 15 15.6667 16.3333 17]

【讨论】:

  • 我相信你的意思是xx=interp1(originalSpacing,x,finalSpacing)
  • 好的。这行得通。这是一个线性插值。非线性呢?
  • @AlexandrosMel 查看 interp1 文档。您可以添加第四个参数来指定插值方法。 “spline”、“pchip”或“cubic”都提供非线性插值
【解决方案2】:

使用interp 可以增加数据

a=1:10;
b=interp(a,3);
b=b(1:end-2);

我删除了最后 2 个点,因为它们超出了范围,但如果它们适合您,您可以使用它们。

【讨论】:

    猜你喜欢
    • 2020-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-17
    • 2018-03-16
    • 1970-01-01
    • 2011-04-07
    相关资源
    最近更新 更多