Calculate linear interpolation of a vector

Hi, I have this problem that I can't resolve. I have a column vector with a numerical value at the beginning of it and at the end example
X=[4 0 0 0 0 0 0 8]'
I need to calculate all the intermediate value making the average of the two values. Example in the position on the center o the vector it should be (8+4)/2=6
I have tried with a recursive method but I can't resolve it. Is there a simply way to do that?

Answers (2)

If you actually want to interpolate, this works:
X = [4 0 0 0 0 0 0 8]';
Xnz = X(X ~= 0); % Non-Zero Elements
vnz = find(X ~= 0); % Indices Of Non-Zero Elements
iv = 1:length(X); % Interpolation Vector
Xi = interp1(vnz, Xnz, iv, 'linear')' % Interpolate To Get Desired Output
Xi =
4.00
4.57
5.14
5.71
6.29
6.86
7.43
8.00
Extrapolation isn’t necessary here, but could be if you had zeros at the ends of the vector.
Matt J
Matt J on 6 Nov 2017
Edited: Matt J on 6 Nov 2017
xnew=linspace(x(1), x(end), numel(x))

2 Comments

Thanks! What's numel(x)?
The (num)ber of (el)ements in x.

Sign in to comment.

Categories

Find more on Interpolation in Help Center and File Exchange

Asked:

on 6 Nov 2017

Answered:

on 6 Nov 2017

Community Treasure Hunt

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

Start Hunting!