MATLAB: Linear Interpolation to eleminate zero values

interp1MATLAB

Hello,
I'm trying to do a linear interpolation of vector y.
So where the 0 begins, I want to take the previous value that is 1 and where the 0 end, the next value that is 4 and interpolate.
That for the next section too, From 3 to 2
Can anyone help please
yn = interp1( idx_start,idx_end ,'spline');
y = [1 2 1 0 0 4 2 1 2 3 0 0 0 2 4 2 2 1]
for k = 1:length(y)-1
if y(k)== 0
idx_start = y(k-1)
break
else
while y(k)== 0
k = k+1
if k>0
idx_end = y(k)
break
end
end
end
end

Best Answer

  • I'm not sure I fully understand your issue, but this may be a solution (or something to point you in the direction)
    y = [1 2 1 0 0 4 2 1 2 3 0 0 0 2 4 2 2 1]
    x = 1:length(y);
    y0 = y(y~=0);
    x0 = find(y~=0);
    y_int = interp1(x0,y0,x,'linear');