MATLAB Answers

3d data fitting from three 1D vector

2 views (last 30 days)
Abi Waqas
Abi Waqas on 16 May 2020
Commented: Ameer Hamza on 17 May 2020
Hi
I want to obtained fitting function Delta_n = f(width,gap, thick). I have run the EM simulation of particular device and obtained the value of Delta_n by varying width, gap and thickness. There is no mathematical model that I can use to fit. The data directily came from EM simulations. I have attached the data in case you want to look into it. The data contain three vectors width_j (1x11), gap_i (1x11) and thick_k (1x10), I have stored the value of Delta_n (11 x 11 x 10) using three nested loop as shown below.
delta_n = matrix (length(gap_i),length(width_j),length(thick_k));
for (kk=1:length(thick_k))
{
for (ii=1:length(gap_i))
{
for(jj=1:length(width_j))
{
delta_n(ii,jj,kk) = EM Simulation (width_i(jj), gap_j(ii), thick_k(kk)) % I have used third party EM simulator here.
}}}
I have gone through several MATLAB answer mostly recommends to use scatteredInterpolant or polyfitn. But here I think is the problem data arrangement. Can anyone please help to obtained the fitting function delta_n=f(width,gap,thick)? I can't use cftool interactive app as it only supports only 2D fucntions.

  0 Comments

Sign in to comment.

Accepted Answer

Ameer Hamza
Ameer Hamza on 16 May 2020
You first need to create a grid from the three input variables and then apply scatteredInterpolant
[W, G, T] = ndgrid(width_j, gap_i, thick_k);
Model = scatteredInterpolant(W(:), G(:), T(:), delta_n(:))

  5 Comments

Show 2 older comments
Ameer Hamza
Ameer Hamza on 17 May 2020
It also does not support code generation, so it seems that Mathworks does not intend it to be interfaced with other software. If you want a closed-form expression, then you need to use the Curve-Fitting toolbox.
Abi Waqas
Abi Waqas on 17 May 2020
cftool box doesn't not support to fit 3D data. It only works upto 2D data.
Ameer Hamza
Ameer Hamza on 17 May 2020
yes, cftool does not support more than two independent variables, but you can programmatically call fit() function. There is no restriction on the number of independent variables.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!