24小时热门版块排行榜    

查看: 2433  |  回复: 10

beina

新虫 (正式写手)

[求助] 需要用matlab拟合数据的外行人急需帮助

我有一函数y=f(x),里面有个未知数k,还有个x,y数值的txt文件,用这些条件求k
首先建立了一个M文件,
function F=myfun(x,xdata)
F=0.6518 + 0.7713./atan(xdata) - 0.0911*atan(xdata) + ((0.9121* xdata + 1.572)./(0.9121* xdata + 1.59 + 2.3026./ xdata + 0.0637*log(1 + 15.7./ xdata)) - 1)./((1 + 5.04*x* xdata).*(1 + (x^0.674)* (xdata.^0.173)));
然后就运行下面的命令:
>> load data.txt
>> xdata=data(:,1);
>> ydata=data(:,2);
>> x=lsqcurvefit(@myfun,0.05,xdata,ydata)
然后就有错误了
??? Error using ==> qr
Complex sparse QR is not yet available.

Error in ==> aprecon at 57
   RPCMTX = qr(TM(:,p));

Error in ==> trdog at 47
         [R,permR] = feval(pcmtx,H,pcoptions,DM,DG,varargin{:});

Error in ==> snls at 346
      [sx,snod,qp,posdef,pcgit,Z] = trdog(x,g,A,D,delta,dv,...

Error in ==> lsqncommon at 285
    [x,FVAL,LAMBDA,JACOB,EXITFLAG,OUTPUT,msg]=...

Error in ==> lsqcurvefit at 186
[x,Resnorm,FVAL,EXITFLAG,OUTPUT,LAMBDA,JACOB] = ...

这是哪里的错误呢, lsqcurvefit 的运用中有木有语法错误,哪位大侠可以帮我解答一下,感激涕零,如果能帮我跑一下程序就最好不过了……
回复此楼
流泪撒种的,必欢呼收割
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dbb627

荣誉版主 (著名写手)

【答案】应助回帖


感谢参与,应助指数 +1
jjdg(金币+1): 感谢支持 2011-12-26 13:32:54
检查下数据,可能在计算过程中出现了复数,是不是去对数时,底数出现了负数
The more you learn, the more you know, the more you know, and the more you forget. The more you forget, the less you know. So why bother to learn.
2楼2011-12-26 10:48:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

田山东

捐助贵宾 (著名写手)

【答案】应助回帖


感谢参与,应助指数 +1
jjdg(金币+1): 感谢支持 2011-12-27 00:55:22
我遇到问题总是去找百度问下,虽然我对你的问题不是很了解,我相信百度可以帮你
everythinghasitsseason.enjoyyourlife.
3楼2011-12-26 14:36:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

beina

新虫 (正式写手)

引用回帖:
: Originally posted by 田山东 at 2011-12-26 14:36:57:
我遇到问题总是去找百度问下,虽然我对你的问题不是很了解,我相信百度可以帮你

我百度了好多回了,找不到
流泪撒种的,必欢呼收割
4楼2011-12-26 17:33:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

【答案】应助回帖


感谢参与,应助指数 +1
jjdg(金币+1): 感谢支持 2011-12-27 00:55:13
你把数据放上来吧,否则很难发现错误。
5楼2011-12-26 17:35:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

beina

新虫 (正式写手)

引用回帖:
: Originally posted by dingd at 2011-12-26 17:35:31:
你把数据放上来吧,否则很难发现错误。

数据有很多
x=[25.9484
25.7484
25.5484
25.3484
25.1484
24.9484
24.7484
24.5484
24.3484
24.1484
23.9484
23.7484
23.5484
23.3484
23.1484
22.9484
22.7484
22.5484
22.3484
22.1484
21.9484
21.7484
21.5484
21.3484
21.1484
20.9484
20.7484
20.5484
20.3484
20.1484
19.9484
19.7484
19.5484
19.3484
19.1484
18.9484
18.7484
18.5484
18.3484
18.1484
17.9484
17.7484
17.5484
17.3484
17.1484
16.9484
16.7484
16.5484
16.3484
16.1484
15.9484
15.7484
15.5484
15.3484
15.1484
14.9484
14.7484
14.5484
14.3484
14.1484
13.9484
13.7484
13.5484
13.3484
13.1484
12.9484
12.7484
12.5484
12.3484
12.1484
11.9484
11.7484
11.5484
11.3484
11.1484
10.9484
10.7484
10.5484
10.3484
10.1484
9.9484
9.7484
9.5484
9.3484
9.1484
8.9484
8.7484
8.5484
8.3484
8.1484
7.9484
7.7484
7.5484
7.3484
7.1484
6.9484
6.7484
6.5484
6.3484
6.1484
5.9484
5.7484
5.5484
5.3484
5.1484
4.9484
4.7484
4.5484
4.3484
4.1484
3.9484
3.7484
3.5484
3.3484
3.1484
2.9484
2.7484
2.5484
2.3484
2.1498
2.003
1.8768
1.8236
1.7816
1.7138
1.632
1.5528
1.4828
1.4426
1.427
1.4128
1.4
]
y=[0.86396
0.86396
0.86384
0.86372
0.86372
0.86372
0.86348
0.86336
0.86336
0.86336
0.86324
0.86324
0.863
0.863
0.863
0.863
0.86288
0.86288
0.86288
0.86264
0.86252
0.8624
0.86228
0.86216
0.86204
0.86204
0.86192
0.8618
0.86156
0.86144
0.86144
0.86144
0.86132
0.8612
0.86108
0.86108
0.86108
0.86108
0.86084
0.86072
0.86072
0.8606
0.86036
0.86024
0.86
0.86
0.85975
0.85951
0.85951
0.85963
0.85963
0.85939
0.85939
0.85927
0.85915
0.85915
0.85915
0.85891
0.85867
0.85831
0.85843
0.85819
0.85807
0.85795
0.85783
0.85783
0.85771
0.85747
0.85747
0.85723
0.85699
0.85699
0.85687
0.85663
0.85627
0.85615
0.85579
0.85567
0.8553
0.85494
0.8547
0.85458
0.85434
0.85398
0.85374
0.8535
0.85326
0.85266
0.85242
0.85194
0.85109
0.85037
0.84965
0.84905
0.84845
0.84785
0.84664
0.8458
0.84448
0.8434
0.84243
0.84087
0.83834
0.83666
0.83462
0.83149
0.82896
0.82535
0.82295
0.82006
0.81525
0.81128
0.80611
0.79733
0.78807
0.77544
0.76004
0.73214
0.70375
0.66623
0.63375
0.58588
0.5498
0.53488
0.53007
0.5261
0.52009
0.50541
0.48677
0.4567
0.433
0.40907
]
流泪撒种的,必欢呼收割
6楼2011-12-27 09:14:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lycid

禁虫 (著名写手)


余泽成(金币+1): 谢谢参与应助! 2011-12-29 21:48:34
本帖内容被屏蔽

» 本帖已获得的红花(最新10朵)

7楼2011-12-27 09:49:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ylberyl

金虫 (正式写手)

【答案】应助回帖


感谢参与,应助指数 +1
余泽成(金币+1): 谢谢参与应助! 2011-12-29 21:48:58
你可以考虑下origin拟合,origin可以自建函数形式的。

» 本帖已获得的红花(最新10朵)

8楼2011-12-27 10:30:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

beina

新虫 (正式写手)


送鲜花一朵
余泽成(金币+1): 谢谢参与应助! 2011-12-29 21:48:49
引用回帖:
: Originally posted by lycid at 2011-12-27 09:49:26:
你的版本是多少 你的程序在matlab7中运行没问题 得到的参数x为复数,当然理论计算得到的ydata也是复数,楼主是不是应该重新考虑一下拟合函数是否合适

这样的话可能是函数的问题了
流泪撒种的,必欢呼收割
9楼2011-12-27 11:36:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

beina

新虫 (正式写手)

送鲜花一朵
引用回帖:
: Originally posted by ylberyl at 2011-12-27 10:30:27:
你可以考虑下origin拟合,origin可以自建函数形式的。

那我试试Origin好了
流泪撒种的,必欢呼收割
10楼2011-12-27 11:38:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 beina 的主题更新
信息提示
请填处理意见