Interpolating the indexes of values in a Vector

hi
i have a Vector lets say a = [2 4 6 8 10 12 14 16]; and i have a value "b" that can change.
I want to write a code that compares the value "b" to every value in "a" starting from index 1 and going to index 8 in this example.
When the value "b" finds a value in "a" so that b >= a(:) and b < a( :+1) . The algorithm will give me the index "c" of that value wich can also be interpolated.
As an example lets say b = 6, then the algorithm will give me c = 3, because the index of 6 in "a" is 3.
but if b = 5 then the algorithm should give me c = 2.5. even tho 5 doesnt exist in "a" but we can know the index with interpolation
and if b = 4.5 then the algorithm should give me c = 2.25
if b = 14.3 then the algorithm should give me c = 7.15 etc...
How can i do this?
Thank you.

 Respuesta aceptada

Use interp1 for this —
a = [2 4 6 8 10 12 14 16];
k = 1:numel(a);
k = 1×8
1 2 3 4 5 6 7 8
interpc = @(b) interp1(a,k,b);
bvector = [4.5 5 6 14.3];
c = interpc(bvector);
Result = [bvector; c]
Result = 2×4
4.5000 5.0000 6.0000 14.3000 2.2500 2.5000 3.0000 7.1500
.

4 comentarios

malik abdelli
malik abdelli el 19 de Sept. de 2023
Tahnks this helped,
just for my understanding what does "interpc = @(b) interp1(a,k,b);" do?
Star Strider
Star Strider el 19 de Sept. de 2023
It is an anonymous function that accepts whatever its argument is and returns the result. Anonymous Functions work like other functions, with a few restrictions based on their simplicity.
malik abdelli
malik abdelli el 19 de Sept. de 2023
ok thank you
Star Strider
Star Strider el 19 de Sept. de 2023
As always, my pleasure!

Iniciar sesión para comentar.

Más respuestas (1)

Hi,
a = [2 4 6 8 10 12 14 16];
b = [6, 5, 4.5, 14.3];
interp1(a,1:numel(a),b,'linear') % 'linear' is also the default
ans = 1×4
3.0000 2.5000 2.2500 7.1500
Best, Konrad

Categorías

Más información sobre Interpolation en Centro de ayuda y File Exchange.

Productos

Preguntada:

el 19 de Sept. de 2023

Comentada:

el 19 de Sept. de 2023

Community Treasure Hunt

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

Start Hunting!

Translated by