声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1741|回复: 5

[编程技巧] [求助]求大侠指导这个nlinfit拟合可行否

[复制链接]
发表于 2009-10-2 22:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
x=[t1 t2 t3 t4 t5  t6  th(4:57,2) const];   

aveW=sum(th(4:57,1))/nx;aveS=sum(th(4:57,2))/nx;     

b0=[ aveW^2 1 0.5 aveW  aveS 1];

myfunc=inline('beta(1)*(x(:,1)+x(:,2)*beta(2)+x(:,3)*beta(2)^2+x(:,4)*beta(3)+x(:,5)*beta(3)^2+x(:,6)*beta(3)^3)^2  +   beta(4)*(x(:,1)+x(:,2)*beta(2)+x(:,3)*beta(2)^2+x(:,4)*beta(3)+x(:,5)*beta(3)^2+x(:,6)*beta(3)^3)  +   beta(5)x(:,7)  +  beta(6)*x(:,8)','beta','x');

b=nlinfit(x,p,myfunc,b0);   

t1,t2等都是54*1的列向量,我试图用ninfit来拟合 结果报错如下

??? Error using ==> nlinfit
The inline model function generated the following error:
Error using ==> inlineeval
Error in inline expression ==> beta(1)*(x(:,1)+x(:,2)*beta(2)+x(:,3)*beta(2)^2+x(:,4)*beta(3)+x(:,5)*beta(3)^2+x(:,6)*beta(3)^3)^2+beta(4)*(x(:,1)+x(:,2)*beta(2)+x(:,3)*beta(2)^2+x(:,4)*beta(3)+x(:,5)*beta(3)^2+x(:,6)*beta(3)^3)+beta(5)x(:,7)+beta(6)*x(:,8)
??? Error: Unexpected MATLAB expression.
Error in ==> erci at 40
b=nlinfit(x,p,myfunc,b0);  

要拟合的方程有点长,求大虾指导我哪里弄错了?或者说nlinfit能否做这样的拟合?不行的话matlab还要其他什么命令能做到的?
再问一件事情呵呵,在这里常看到有什么说拟合用1stOpt拟合,这个软件貌似都是收费的吗?
式子有点长,问题也有点多,请各位多多指教啦,最近要用到刚这个头都大了,先谢过了
回复
分享到:

使用道具 举报

发表于 2009-10-2 23:50 | 显示全部楼层

回复 楼主 hrainbow 的帖子

beta(5)x(:,7)之间少了个“*”.另外用inline时不知道x(:,1)这种形式是合适的吗?

评分

1

查看全部评分

 楼主| 发表于 2009-10-3 09:12 | 显示全部楼层
x的形式是可以的 前面做一次拟合时能行的
现在加了*号了 编译还有问题
??? Error using ==> nlinfit
The inline model function generated the following error:
Error using ==> inlineeval
Error in inline expression ==> beta(1)*(x(:,1)+x(:,2)*beta(2)+x(:,3)*beta(2)^2+x(:,4)*beta(3)+x(:,5)*beta(3)^2+x(:,6)*beta(3)^3)^2+beta(4)*(x(:,1)+x(:,2)*beta(2)+x(:,3)*beta(2)^2+x(:,4)*beta(3)+x(:,5)*beta(3)^2+x(:,6)*beta(3)^3)+beta(5)*x(:,7)+beta(6)*x(:,8)
??? Error using ==> mpower
Matrix must be square.
Error in ==> erci at 40
b=nlinfit(x,p,myfunc,b0);  
谢谢啦呵呵我自己都没看出来
 楼主| 发表于 2009-10-3 09:35 | 显示全部楼层
再次谢谢啦,拟合出来了呵呵,大括号后面的^2应该是.^2,
原来这样也能拟合的,我还担心不行呢,看了我得细心点啊
 楼主| 发表于 2009-10-3 09:54 | 显示全部楼层
再来问下matlab里边单行程序分行写是这样吗
myfunc=inline('beta(1)*(x(:,1)+x(:,2)*beta(2)+x(:,3)*beta(2)^2+x(:,4)*beta(3)+x(:,5)*beta(3)^2+x(:,6)*beta(3)^3)^2 ...
+   beta(4)*(x(:,1)+x(:,2)*beta(2)+x(:,3)*beta(2)^2+x(:,4)*beta(3)+x(:,5)*beta(3)^2+x(:,6)*beta(3)^3) ...
+   beta(5)x(:,7)  +  beta(6)*x(:,8)','beta','x');

我编译不行啊?
发表于 2009-10-5 03:53 | 显示全部楼层

回复 5楼 hrainbow 的帖子

myfunc=inline(['beta(1)*(x(:,1)+x(:,2)*beta(2)+x(:,3)*beta(2)^2+x(:,4)*beta(3)+x(:,5)*beta(3)^2+x(:,6)*beta(3)^3)^2', ...
'+   beta(4)*(x(:,1)+x(:,2)*beta(2)+x(:,3)*beta(2)^2+x(:,4)*beta(3)+x(:,5)*beta(3)^2+x(:,6)*beta(3)^3)', ...
'+   beta(5)x(:,7)  +  beta(6)*x(:,8)'],'beta','x');
这样试试

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-29 20:53 , Processed in 0.088947 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表