Linear Interpolation to eleminate zero values

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

 채택된 답변

Johannes Hougaard
Johannes Hougaard 2020년 9월 24일

2 개 추천

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');

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Interpolation에 대해 자세히 알아보기

제품

릴리스

R2018b

태그

질문:

2020년 9월 24일

댓글:

2022년 6월 6일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by