I wrote this function, which should calculates the values of the linear interpolation

I wrote this function, which should calculates the values of the linear interpolation function x values given by Xl = [xmin,
xmax]:
function [ X, Y ] = linterp( a, b, Xl, n ) % Xl = [xmin, xmax]
x = linspace( Xl(1), Xl(2), n + 1 ) ;
result = a*x + b ;
X = result(1) ;
Y = result(2) ;
end
I compared the results with polyval
Y2 = polyval( [ a b ], X )
and in 2 out of 3 cases the function works...
What is going wrong?
for linterp( 1, 0, [0 1], 2 ) - the answer should be 0, but it 0.5
for other examples answers are great.

3 Comments

For a=1, b=0, Xl = [0 1] and n = 2, your function "linterp" works as follows:
x = linspace(0,1,2+1) gives x = [0 0.5 1]
result = a*x + b then gives result = 1*[0 0.5 1] + 0 = [0 0.5 1]
X = result(1) gives X = 0
Y = result(2) gives Y = 0.5.
So X = 0, Y = 0.5 is returned from "linterp".
If you want your function to return something different, you will have to explain what.
Thank you so much, I want my function to return me the same answer as Y2 = polyval( [ a b ], X ) for the same values.
I want that Y from my function will be equal to Y2 from polyval function. For other input data Y == Y2, but for 1, 0, [0 1], 2 - not.
Y = polyval( [ 1 0 ], [0 1] )
Y = 1×2
0 1
This call to "polyval" evaluates the linear function p(x) = 1*x + 0 = x at x=0 and x=1.
What does this has to do with interpolation ?

Sign in to comment.

 Accepted Answer

function [ X, Y ] = linterp( a, b, Xl, n ) % Xl = [xmin, xmax]
X = linspace( Xl(1), Xl(2), n + 1 ) ;
Y = a*X + b ;
end

More Answers (0)

Categories

Find more on Interpolation in Help Center and File Exchange

Asked:

on 10 Dec 2022

Edited:

on 10 Dec 2022

Community Treasure Hunt

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

Start Hunting!