在 Matlab 中使用插值创建新值
Create new values using Interpolation in Matlab
我有一个向量 x=[7 8 8 8...] 和相应的向量 y=[13 14 15 16...] ,这给了我一些分数,如下图所示
现在 我想在给定 points.I 的每对 之间创建两个(或通常为 N 个)新点,我认为这应该使用插值来完成,但我有找不到我可以在这种情况下使用的东西。
结果应该是这样的:
x= [ 7 7.4 7.7 8 8 8 8...] ,
y=[ 13 13.3 13.8 14 14.2 14.5 15...]
使用interp
你可以增加你的数据
a=1:10;
b=interp(a,3);
b=b(1:end-2);
我删除了最后 2 个点,因为它们超出了范围,但如果它们适合您,您可以使用它们。
要使用的函数是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]
我有一个向量 x=[7 8 8 8...] 和相应的向量 y=[13 14 15 16...] ,这给了我一些分数,如下图所示
现在 我想在给定 points.I 的每对 之间创建两个(或通常为 N 个)新点,我认为这应该使用插值来完成,但我有找不到我可以在这种情况下使用的东西。
结果应该是这样的:
x= [ 7 7.4 7.7 8 8 8 8...] ,
y=[ 13 13.3 13.8 14 14.2 14.5 15...]
使用interp
你可以增加你的数据
a=1:10;
b=interp(a,3);
b=b(1:end-2);
我删除了最后 2 个点,因为它们超出了范围,但如果它们适合您,您可以使用它们。
要使用的函数是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]