24小时热门版块排行榜    

查看: 2076  |  回复: 8

lanlan0822

铜虫 (初入文坛)


[交流] 【求助】急求关于matlab做非线性拟合的函数

我这里有三十组X1、X2与Y值,想拟合出它们之间的二元非线性回归方程,不知道如何下手,望知道的童鞋指点。

X1=[367 357 348 338 333360 351 343 335 329 363 355 344 337 330 358 351 343 334
327 358 352 340 332 326 362 356 344 337 332]

X2=[600 630 650 680 710 625 645 678 712 720 640 635 688 679 727 642 664 693 67
5 740 630 648 689 710 742 620 643 667 701 710]

Y=[10.60 17.01 25.40 38.52 46.99 14.47 21.77 31.30 41.89 52.05 12.65 19.49 30.
28 40.32 51.33 16.11 22.22 32.02 44.25 57.64 15.68 21.09 34.85 47.01 59.45 13.
37 17.39 30.03 39.29 47.97]

如果用matlaB回归的话,希望可以转告程序!
不胜感激,多谢!我一共就32枚金币,但是系统提示送不了30枚,所以就送25枚了
急求!
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

» 抢金币啦!回帖就可以得到:

查看全部散金贴

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lijinfeng042

木虫 (小有名气)


lanlan0822(金币+1): 2011-01-05 09:01:46
方程的形式呢
2楼2011-01-04 13:03:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
lanlan0822(金币+1): 2011-01-05 09:01:52
回归的话 您的方程形式要您设定 不知道您的方程是什么
3楼2011-01-04 13:12:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

蓝云天

木虫 (著名写手)


★ ★
lanlan0822(金币+5): 2011-01-05 09:01:31
xiegangmai(金币+2):辛苦了,谢谢应助! 2011-01-07 22:07:27
楼主给你个例子,你自己琢磨琢磨吧。我觉得最好的学习方式就是按照一个例子自己摸索试验。
例程:方程为F=K*X+C*Y+Z*(1-exp(-B*y^2))-F0
F,X,Y,F0,都是已知的列向量,拟合参数K,C,Z,B
解:在Matlab下输入:edit,然后将下面两行百分号之间的内容,复制进去,保存
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function F=zhidao_31(a,x)
%其中K,C,Z,B分别用a(1),a(2),a(3),a(4)代替
%X,Y,F0分别用x(:,1),x(:,2),x(:,3)代替
F=a(1)*x(:,1)+a(2)*x(:,2)+a(3)*(1-exp(-a(4)*x(:,2).^2))-x(:,3);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


以下是测试:在Matlab下面输入:
%先由已经的x,y,F0和已知的k,c,z,b来产生F,然后通过x,y,F0,F
%验证一下:能否得到我们刚才所选用的参数k,c,z,b
%下面以随机数为例
x=rand(100,1);
y=rand(100,1);
F0=rand(100,1);

k=1;
c=1.5;
z=2.5;
b=3.5;

X=[x,y,F0];
F=zhidao_31([k,c,z,b],X);
[A,res]=lsqcurvefit('zhidao_31',ones(1,4),X,F);
A

得到的结果:
A =
    1.0033    1.4446    2.5520    3.4853
跟k,c,z,b的值大致一样。
------------------------------------------
例题中的问题:
设好x,y,F0,F后,在Matlab下输入:
[A,res]=lsqcurvefit('zhidao_31',ones(1,4),[x,y,F0],F);  %注意x,y大小写。
A

就可以了。
5楼2011-01-04 13:46:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lanlan0822

铜虫 (初入文坛)


关于matlab做非线性拟合的函数

我想得出一个二元二次的回归方程,但是找到的都是只能进行线性回归,或者是二元二次回归的。
6楼2011-01-04 15:29:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lanlan0822

铜虫 (初入文坛)


[关于matlab做非线性拟合的函数

我想得出一个二元二次的回归方程,但是找到的都是只能进行线性回归,或者是二元二次回归的。
7楼2011-01-04 15:30:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

小木虫: 金币+0.5, 给个红包,谢谢回帖
y=p0+p1*x1+p2*x2;p1                
p0 = 352.718330203856
p1 = -1.03742355830517
p2 = 0.0544705855433249
相关系数(R): 0.988109884761729


y=p0+p1*x1+p2*x2+p3*x1^2+p4*x2^2+p5*x1*x2;
p0 = 5409.56927884948
p1 = -22.0861948342262
p2 = -4.06582793544753
p3 = 0.024111003125518
p4 = 0.00140539387129161
p5 = 0.0063262492366287
相关系数(R): 0.999477545777094
8楼2013-11-01 20:38:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

cobrasq

金虫 (小有名气)


★ ★
小木虫: 金币+0.5, 给个红包,谢谢回帖
1592203609: 金币+1, 谢谢回帖 2013-11-02 12:18:48
假设你预期的二元二次方程为
y = b1 + b2*X1 + b3*X2 + b4*X1*X2 + b5*X1^2 + b6*X2^2

程序如下
X1=[367 357 348 338 333360 351 343 335 329 363 355 344 337 330 358 351 343 334 327 358 352 340 332 326 362 356 344 337 332 357];

X2=[600 630 650 680 710 625 645 678 712 720 640 635 688 679 727 642 664 693 675 740 630 648 689 710 742 620 643 667 701 710];

Y=[10.60 17.01 25.40 38.52 46.99 14.47 21.77 31.30 41.89 52.05 12.65 19.49 30.28 40.32 51.33 16.11 22.22 32.02 44.25 57.64 15.68 21.09 34.85 47.01 59.45 13.37 17.39 30.03 39.29 47.97];

modelfun = @(b,x)b(1)+b(2)*x(1,+b(3)*x(2,+b(4)*x(1,.*x(2,+b(5)*x(1,.^2+b(6)*x(2,.^2;
beta0 = [1 2 3 4 5 6];
mdl = nlinfit([X1;X2],Y,modelfun,beta0)

如果效果不好,可以考虑加权函数或启用robust.
9楼2013-11-02 05:09:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
简单回复
zyxme4楼
2011-01-04 13:20   回复  
robert2020(金币-2):为了他人的方便,请勿在求助帖中纯表无意义回复! 2011-01-11 10:34:40
相关版块跳转 我要订阅楼主 lanlan0822 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见