Use My Own Interpolation Function to Find the Coefficients

35 views (last 30 days)
I want to interpolate some points using my interpolation function to find the coefficients (a,b,c,d). In my case, the interpolation function is a*r^3 + b*r^2 + c*r + d where r = sqrt(x^2 + y^2). Since this is the first time I am using Matlab, I cannot locate the build-in function where I can input my function and matlab could return the coefficients. Could anyone assist me please with this? Thank you so much!

Answers (2)

Shoresh Shokoohi
Shoresh Shokoohi on 8 Sep 2023
To find the coefficients (a, b, c, d) for your interpolation function, you can use MATLAB's curve fitting toolbox or manually implement the interpolation process. Here's a step-by-step guide for both approaches:
Approach 1: Using MATLAB's Curve Fitting Toolbox
  1. Prepare your data: Organize your data points as pairs of (x, y) values that you want to interpolate. For example, you might have an array of x values and a corresponding array of y values.
  2. Define your interpolation function: Define your interpolation function in a MATLAB script or function. In your case, the interpolation function is a*r^3 + b*r^2 + c*r + d, where r = sqrt(x^2 + y^2).
  3. Use MATLAB's curve fitting toolbox: You can use the fit function from the curve fitting toolbox to fit your data to the interpolation function. Here's a sample code snippet:
% Define your interpolation function interpolation_function = @(a, b, c, d, x, y) a * sqrt(x.^2 + y.^2).^3 + b * sqrt(x.^2 + y.^2).^2 + c * sqrt(x.^2 + y.^2) + d; % Organize your data x_data = [your_x_values]; y_data = [your_y_values]; z_data = [your_z_values]; % Corresponding values you want to interpolate % Fit the data to your interpolation function fitted_model = fit([x_data, y_data], z_data, interpolation_function, 'StartPoint', [initial_a, initial_b, initial_c, initial_d]); % Extract the coefficients a_fit = fitted_model.a; b_fit = fitted_model.b; c_fit = fitted_model.c; d_fit = fitted_model.d; % Display the coefficients disp(['a = ', num2str(a_fit)]); disp(['b = ', num2str(b_fit)]); disp(['c = ', num2str(c_fit)]); disp(['d = ', num2str(d_fit)]);
Make sure to replace [your_x_values], [your_y_values], [your_z_values], initial_a, initial_b, initial_c, and initial_d with your actual data and initial guesses for the coefficients.
Approach 2: Manual Interpolation
If you want to perform the interpolation manually without using MATLAB's curve fitting toolbox, you can use MATLAB's optimization functions, such as fminunc or lsqnonlin, to find the coefficients (a, b, c, d) that minimize the error between your interpolation function and the data points. This approach requires more coding but gives you more control over the optimization process.

Matt J
Matt J on 8 Sep 2023
Since your model function is a 3rd order polynomial, you can use polyfit to find the coefficients. Then you can use polyval to evulate the function at arbitrary r.

Categories

Find more on Interpolation in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!