24小时热门版块排行榜    

查看: 2273  |  回复: 12
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

albertazhao

铜虫 (初入文坛)

[求助] 非线性回归中,函数表达式错误Matrix dimensions must agree????

非线性回归中,函数表达式错误Matrix dimensions must agree????
怎么回事呢?急急急!!!
程序如下
x =
    1.1200
    1.2400
    1.3000
    1.1700
    1.1600
    0.9760
    0.8090
    0.8100
    0.4440
    0.4290
y =
    1.5900
    1.6300
    1.8600
    1.7700
    1.7300
    1.4500
    1.3600
    1.2000
    0.9520
    0.8280
ab=[1 2];
f=inline('y-(a(2)*(1.1*sqrt(x)+a(1))./(0.5*x+52))','x','y','a');
[a,r]=lsqnonlin(f,ab,[ ],[ ],[ ],x,y)


albertazhao@gmail.com
回复此楼
7777777777
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖

★ ★
感谢参与,应助指数 +1
臭水沟: 金币+2, 谢谢交流~~ 2012-07-17 22:29:45
[a,r]=lsqnonlin(@(a)f(x,y,a),ab,[ ],[ ],[ ])



a =

   -0.2423   92.9878


r =

    0.0573
showmethemoney
7楼2012-07-17 16:05:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖

★ ★ ★ ★ ★
albertazhao: 回帖置顶 2012-07-19 14:06:09
albertazhao: 金币+5, ★★★很有帮助 2012-07-19 14:06:35
CODE:
function alb
x =[ 1.1200;1.2400;1.3000;1.1700;1.1600;0.9760;0.8090;0.8100;0.4440;0.4290];
y =[ 1.5900;1.6300;1.8600;1.7700;1.7300;1.4500;1.3600;1.2000;0.9520;0.8280];
ab=[1 2];
f=inline('y-(a(2)*(1.1*sqrt(x)+a(1))./(0.5*x+52))','x','y','a');
[a,r]=lsqnonlin(@(a)f(x,y,a),ab)
end

showmethemoney
9楼2012-07-17 17:37:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖


臭水沟: 金币+1, 谢谢交流~~ 2012-07-17 22:29:55
albertazhao: 回帖置顶 2012-07-19 14:01:35
引用回帖:
8楼: Originally posted by albertazhao at 2012-07-17 17:30:59
ab=;
f=inline('y-(a(2)*(1.1*sqrt(x)+a(1))./(0.5*x+52))','a','x','y');
=lsqnonlin(@(a)f(x,y,a),ab)   
我的运行错误,为什么?
Error in inline expression ==> y-(a(2)*(1.1*sqrt(x)+a(1))./(0.5*x+5 ...

问题在于定义f时是a,x,y的顺序,调用时是x,y,a的顺序,改成一致应该就可以了

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

showmethemoney
10楼2012-07-17 17:47:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

★ ★ ★
albertazhao: 回帖置顶 2012-07-19 16:37:15
xiegangmai: 金币+3, 谢谢应助! 2012-07-20 00:19:24
引用回帖:
11楼: Originally posted by albertazhao at 2012-07-19 13:59:50
可以运行了,
为什么是这个顺序
另外我换了数据,为什么就得不到结果,结果还是初始值
cftool命令也不能得到稳定数值,运行一次得到的数值和运行第二次不同
我拟合公式
拟合方程-非线性回归-Matlab lsqnonlin ...

要保证你使用时的顺序跟你定义时的顺序是一致的,前面用axy,后面就要用axy,前面用xya,后面就要用xya。当然,前面用xya,后面你也可以用yxa,但是y和x就反了,但是你不能用xay,因为你的a是2个元素,y是一个元素。
拟合不出来是因为你的y太大了,ab的变化对y的影响很小。需要自己改写函数

更详细的在matlab帮助里搜索Local Minimum Possible就可以看到了
showmethemoney
12楼2012-07-19 15:20:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 albertazhao 的主题更新
信息提示
请填处理意见