nlinfit using 3D coordinates

1 次查看(过去 30 天)
E
E 2013-4-9
Hey guys! I'm trying to figure out this problem:
z(x, y) = A exp [−(((x − B)^2/2*C^2)+ ((y − D)^2/2*E^2))]
I'm given vector data for x,y, and z
So far I have tried using
fxn=@(C,x,y) C(1)*exp (−(((x − C(2))^2/2*C(3)^2)+ ((y − C(4))^2/2*C(5)^2)));
nlinfit(x,z,fxn,[3 3 3 3 3],[],y)
but I'm not sure how to pass the arguments through. HELP!!!
  1 个评论
E
E 2013-4-9
i guess I didn't write it, but I'm trying to fit the data using the given function..The only two things we have learned are polyfit and nlinfit so I know I have to use nlinfit

请先登录,再进行评论。

采纳的回答

Tom Lane
Tom Lane 2013-4-11
I like your reasoning for using nlinfit.
I see two issues. First, use ".^" instead of "^" in your expression, because you want elementwise operations rather than matrix operations.
Second, nlinfit wants to call your function with the parameters as the first input and the X variables as the second. You have written a function that takes two different X variables as the second and third inputs. A simple way to deal with that would be to write a little converter:
otherfcn = @(C,xy) fxn(C,xy(:,1),xy(:,2));
nlinfit(x,z,otherfcn,[3 3 3 3 3])

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by