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拟合的出来的数全是复数,要求的数应该是实数。请问我的方法错了,该怎么做?谢谢
展开
 我来答
21笨女孩
推荐于2016-06-17 · 超过16用户采纳过TA的回答
知道答主
回答量:59
采纳率:0%
帮助的人:39万
展开全部
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)

建议把你的代码给出,可以帮你看一下
更多追问追答
追问
谢谢了
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
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式