필터 지우기
필터 지우기

Curve fitting function (fit) error

조회 수: 22 (최근 30일)
sepideh
sepideh 2012년 11월 2일
댓글: chuenkiong 2023년 3월 15일
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, ...

답변 (3개)

Walter Roberson
Walter Roberson 2012년 11월 2일
surfacefit=fit([x(:), y(:)],z(:),'polyll')
  댓글 수: 3
Susarla
Susarla 2015년 2월 5일
Many Thanks for this answer
chuenkiong
chuenkiong 2023년 3월 15일
Thank you so much!

댓글을 달려면 로그인하십시오.


Di Xu
Di Xu 2016년 9월 8일
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 2016년 5월 12일
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.

카테고리

Help CenterFile Exchange에서 Get Started with Curve Fitting Toolbox에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by