interp1不会返回预期结果

use*_*272 1 arrays matlab linear-interpolation

我正在尝试插入向量的值,但我似乎无法理解如何正确使用interp1.m.

这就是我所期待的:

a=[1 0 2 0 3 0 4];
//Use of interp1.m
Output=[1 1.5 2 2.5 3 3.5 4];

a=[1 0 0 2 0 0 3 0 0 4];
//Use of interp1.m
Output=[1 1.32 1.65 2 2.31 2.64 3 3.3 3.63 4];
Run Code Online (Sandbox Code Playgroud)

the*_*alk 5

假设您总是希望填充向量的零值:

a = [3 0 6 0 5 0 4]

mask = logical(a);
nvec = 1:numel(a);
a(~mask) = interp1(nvec(mask),a(mask),nvec(~mask))
Run Code Online (Sandbox Code Playgroud)
a =

    3.0000    4.5000    6.0000    5.5000    5.0000    4.5000    4.0000
Run Code Online (Sandbox Code Playgroud)

假设您想要按某个因素拉伸矢量:

a = [3 6 5 4]
stretchfactor = 2;
a = interp1((1:numel(a))*stretchfactor - 1, a, 1:numel(a)*stretchfactor - 1)
Run Code Online (Sandbox Code Playgroud)
a =

    3.0000    4.5000    6.0000    5.5000    5.0000    4.5000    4.0000
Run Code Online (Sandbox Code Playgroud)