Calculate linear interpolation of a vector

84 visualizaciones (últimos 30 días)
Nicola Caldognetto
Nicola Caldognetto el 6 de Nov. de 2017
Respondida: Star Strider el 6 de Nov. de 2017
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?

Respuestas (2)

Star Strider
Star Strider el 6 de Nov. de 2017
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 el 6 de Nov. de 2017
Editada: Matt J el 6 de Nov. de 2017
xnew=linspace(x(1), x(end), numel(x))
  2 comentarios
Nicola Caldognetto
Nicola Caldognetto el 6 de Nov. de 2017
Thanks! What's numel(x)?
Matt J
Matt J el 6 de Nov. de 2017
The (num)ber of (el)ements in x.

Iniciar sesión para comentar.

Categorías

Más información sobre Interpolation en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by