Matlab对数拟合时出现复数
X=[24810121516232629323538557495140144190234272362410514604694784874]Y=[7.61E-063.73E...
X=[ 2
4
8
10
12
15
16
23
26
29
32
35
38
55
74
95
140
144
190
234
272
362
410
514
604
694
784
874 ]
Y=[
7.61E-06
3.73E-06
1.38E-06
-1.6E-06
4.06E-06
-2E-06
-2.4E-06
-7.9E-06
-9.2E-06
-7.1E-06
-1.1E-05
-1.1E-05
-1E-05
-1.9E-05
-2.7E-05
-4.4E-05
-0.00011
-0.0001
-0.00014
-0.00018
-0.00023
-0.00035
-0.00041
-0.00054
-0.00064
-0.00076
-0.00081
-0.00092 ]
拟合公式为Y=a*ln(b*X+1)+c
我用lsqcurvefit拟合的出来的数全是复数,要求的数应该是实数。请问我的方法错了,该怎么做?谢谢 展开
4
8
10
12
15
16
23
26
29
32
35
38
55
74
95
140
144
190
234
272
362
410
514
604
694
784
874 ]
Y=[
7.61E-06
3.73E-06
1.38E-06
-1.6E-06
4.06E-06
-2E-06
-2.4E-06
-7.9E-06
-9.2E-06
-7.1E-06
-1.1E-05
-1.1E-05
-1E-05
-1.9E-05
-2.7E-05
-4.4E-05
-0.00011
-0.0001
-0.00014
-0.00018
-0.00023
-0.00035
-0.00041
-0.00054
-0.00064
-0.00076
-0.00081
-0.00092 ]
拟合公式为Y=a*ln(b*X+1)+c
我用lsqcurvefit拟合的出来的数全是复数,要求的数应该是实数。请问我的方法错了,该怎么做?谢谢 展开
1个回答
展开全部
function f=fun(a,x)
f=a(1)*log(a(2)*x+1)+a(3);
x=[ ];
y=[ ];
a=lsqcurvefit('fun',[1 1 1],x,y)
建议把你的代码给出,可以帮你看一下
f=a(1)*log(a(2)*x+1)+a(3);
x=[ ];
y=[ ];
a=lsqcurvefit('fun',[1 1 1],x,y)
建议把你的代码给出,可以帮你看一下
更多追问追答
追问
谢谢了
function F = myfunc(m,xdata)
F=m(1)*log(m(2).*xdata+1)+m(3);
---------------
用
A3=lsqcurvefit('myfunc',[1 1 1],X,Y);
结果是复数
我用
A2 =nlinfit(X,Y,'myfunc',[1 1 1]);
结果不是复数
追答
把你的A3改成m
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询