24小时热门版块排行榜    

CyRhmU.jpeg
查看: 4778  |  回复: 3

加油_加油

铁虫 (小有名气)

[求助] 关于matlab两个自变量、一个因变量曲线拟合问题

本人matlab比较菜,但是现在需要用matlab做曲线拟合,两个自变量x1、x2,一个因变量y,原本只是用曲线拟合工具箱得到y与x1的拟合曲线,但是后面发现x2取7或28时(x2只取7或28),y与x1都是只有指数函数形式最符合要求,下面是数据
x1=[0 5 10 20 30 0 5 10 20 30];
x2=[7 7 7 7 7 28 28 28 28 28];
y=[3.15 3.85 3.5 2.8 2.1 5.25 6.30 7.00 4.90 4.20];
请会的高手帮帮忙,应该怎么写程序呢,非常感谢啊
回复此楼

» 猜你喜欢

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

有时候努力不一定得到,但是不努力就一定得不到,甚至得到它的机会。。。
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

feixiaolin

荣誉版主 (文坛精英)

优秀版主

y=(p1+p3*x1+p5*x1^2)/(1+p2*x1+p4*x1^2)+p5*x2;
p1  = 0.0129970460016564
p2 = 3.47003593564609
p3 = 0.0451002163249274
p4 = 6.06801558986791
p5  = 0.0788662777562545
2楼2014-01-03 14:51:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

加油_加油

铁虫 (小有名气)

引用回帖:
2楼: Originally posted by feixiaolin at 2014-01-03 14:51:14
y=(p1+p3*x1+p5*x1^2)/(1+p2*x1+p4*x1^2)+p5*x2;
p1  = 0.0129970460016564
p2 = 3.47003593564609
p3 = 0.0451002163249274
p4 = 6.06801558986791
p5  = 0.0788662777562545

谢谢,但是这个不是我想要的呢,我用线性回归regress做过,R^2=0.83,离1太远了,所以想用非线性拟合,但老是错误出现,请帮忙求解。
function yy=model(beta0,X)
a=beta0(1);
b=beta0(2);
c=beta0(3);
d=beta0(4);
x=X(:,1);
z=X(:,2);  
yy=beta0(1)*exp(beta0(2).*x)+beta0(3)*exp(beta0(4).*z;
主程序为
X=[0, 5 ,10 ,20, 30, 0, 5 ,10 ,20, 30;
    7, 7, 7 ,7, 7, 28, 28 ,28, 28, 28]';
y=[3.15 3.85 3.5 2.8 2.1 5.25 6.30 7.00 4.90 4.20]';
beta0=[1 1 1 1];
betafit=nlinfit(X,y,'model',beta0)
怎么改都改不好,帮忙看看吧,非常感谢
有时候努力不一定得到,但是不努力就一定得不到,甚至得到它的机会。。。
3楼2014-01-03 15:28:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

feixiaolin

荣誉版主 (文坛精英)

优秀版主

引用回帖:
3楼: Originally posted by 加油_加油 at 2014-01-03 15:28:53
谢谢,但是这个不是我想要的呢,我用线性回归regress做过,R^2=0.83,离1太远了,所以想用非线性拟合,但老是错误出现,请帮忙求解。
function yy=model(beta0,X)
a=beta0(1);
b=beta0(2);
c=beta0(3);
d=beta ...

我只能搞到这个水平了。
4楼2014-01-03 15:32:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 加油_加油 的主题更新
信息提示
请填处理意见