Asked by Ano
on 26 Apr 2018

Hello I would to know how I can perform a quadratic interpolation of an array using matlab ? it is worth mentioning that I am using interp1 for now. thank you!

Answer by Ameer Hamza
on 26 Apr 2018

Accepted Answer

coefficients = polyfit(x, y, 2);

Then to interpolate the value use

interpolatedValues = polyval(coefficients, xq); % xq vector of points where you want to interpolate

Ameer Hamza
on 26 Apr 2018

Ano
on 27 Apr 2018

Please find bellow how x and y should look like:

x = [1 3 5];

y(:,:,1) = [0.5 0.6 0.9 ; -1 -3 5;0.2 0.01 -3+1i];

it is worth mentioning that x is the third dim of y and they will not have the same length always. thank you!

Ameer Hamza
on 27 Apr 2018

In training phase of interpolation you need to vector x and y of equal length. Because by definition of interpolation, you are trying to estimate a function f: x -> y, which will best (e.g. in the least square sense) model the relation between x and y. This requires training dataset to have the same length of x and y.

After training is complete, you can use f to estimate y value at points xq for which you don't know the actual value of y, using f(xq).

Sign in to comment.

Answer by Walter Roberson
on 26 Apr 2018

A = [x(:).^2, x(:), ones(numel(x),1)];

b = y;

coefficients = (A\b).';

This code is fine with x being either a row vector or column vector. The code expects that you are doing the quadratic fitting over each column of y independently (not over the rows.)

The array of coefficients that results will be N x 3 where N is the number of columns of y. The order of the coefficients will be the x^2 coefficient, then the x coefficient, then the constant.

Sign in to comment.

Opportunities for recent engineering grads.

Apply Today
## 0 Comments

Sign in to comment.