Effacer les filtres
Effacer les filtres

Curve fitting function (fit) error

22 vues (au cours des 30 derniers jours)
sepideh
sepideh le 2 Nov 2012
Commenté : chuenkiong le 15 Mar 2023
I am using function "fit" to fit a surface to my data. I have a 3 dimentional data , z(x,y). I use the function as below: surfacefit=fit([x y],z,'polyll') I am sure both my x and y are column matrix and have the same dimension. But i get this error : Error using fit>iFit (line 133) Y must be a column vector.
Error in fit (line 109) [fitobj, goodness, output, convmsg] = iFit( xdatain, ydatain, fittypeobj, ...

Réponses (3)

Walter Roberson
Walter Roberson le 2 Nov 2012
surfacefit=fit([x(:), y(:)],z(:),'polyll')
  3 commentaires
Susarla
Susarla le 5 Fév 2015
Many Thanks for this answer
chuenkiong
chuenkiong le 15 Mar 2023
Thank you so much!

Connectez-vous pour commenter.


Di Xu
Di Xu le 8 Sep 2016
Hi,
I think your z is a matrix, right?
But in fit([x y],z,'polyll'), z must be a column.
So you can use the reshape function http://nl.mathworks.com/help/matlab/ref/reshape.html You can simply reshape z into a column by z=reshape(z,[],1). Of course, you should accordingly change x and y, in order that they have the same disension as z, i.e. for every element in z, its coordinates should be at the according position in x and y.
Then you can run fit.

Kutsop
Kutsop le 12 Mai 2016
I had the same problem. "Y" in this case is the second variable called in fit("X","Y","fittype") where for a 3D fit "X" is usually "[x,y]" and "Y" is "z" or in other words fit("[x,y]","z","fittype"). So if for z is a 64 by 64 array and x = 1:64; y = 1:64; then you need to make both x and y 64 by 64 arrays with repeated column and row values respectively, and then use reshape to make x,y,z all 4096 by 1 column vectors. You bassically need to unravel your 3D array.

Catégories

En savoir plus sur Get Started with Curve Fitting Toolbox dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by