Surface fit doesnt cover all datapoints
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Jesús Gutiérrez
am 23 Jun. 2020
Kommentiert: Jesús Gutiérrez
am 24 Jun. 2020
I am triying to plot a surface response with some input points from a parametric study with the following code:
[xData,yData,zData] = prepareSurfaceData(x,y,z);
ft = 'cubicinterp';
[fitresult,gof] = fit([xData,yData], zData, ft, 'Normalize', 'on');
[X,Y] = meshgrid(x(1):0.1:xData(end),y(1):0.1:y(end));
Z = fitresult(X,Y);
surf(X,Y,Z,'EdgeColor','texturemap');
The problem is that the surface fitted doesn't cover all original points x,y,z (red balls in figures), it stops in a given x (
) value. I am fitting ten different surfaces with the same x and y data points but different z and all have the same problem.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/321124/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/321010/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/321013/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/321028/image.png)
2 Kommentare
dpb
am 23 Jun. 2020
Attach at least one of the datasets -- nobody can reproduce anything easily.
It would appear that the problem is probably that your [X,Y] vectors don't span the space; you use limits from the first and last elements in an input array, but those apparently aren't necessarilyh the minimum nor maximum points in the datasets.
Akzeptierte Antwort
John D'Errico
am 23 Jun. 2020
Bearbeitet: John D'Errico
am 23 Jun. 2020
load dataset1
x
x =
20 30 40 50 20 30 50 40 50 60 40 50 60 20 30 50 60 70 30 40 50
Why am I surprised that x(1) and x(end) do not contain all the data?
x(end)
ans =
50
max(x)
ans =
70
How did you display the data?
[X,Y] = meshgrid(x(1):0.1:xData(end),y(1):0.1:y(end));
Of course, this line of code does not even use x(end), but xData(end).
[xData,yData,zData] = prepareSurfaceData(x,y,diff_fpant_1_max);
>> xData
xData =
20
30
40
50
20
30
50
40
50
60
40
50
60
20
30
50
60
70
30
40
50
However, does prepareSurfaceData actually perform a sort of your data? It might be a good idea to look at that.
I would suggest you are jumping to conclusions without actually looking at what some of that code does. That would alsys seem a dangerous thing to do.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Curve Fitting Toolbox finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!