24小时热门版块排行榜    

Znn3bq.jpeg
查看: 2743  |  回复: 7

lihongru

金虫 (小有名气)

[求助] matlab非线性参数拟合问题

现已知x和y的一系列实验值,且已知x和y具有如下关系:
y=kln(x-ky)+a,期中k和a是待拟合的参数,我一开始采用线性拟和的方法,先给括号中的k赋初值k0,对y和ln(x-k0)线性回归出新的k和a,然后对k进行迭代和线性拟合,直到k收敛,现在的问题是有的情况下能够收敛出k,有时不收敛,请问有没有更好的非线性回归方法,求得k和a参数呢?
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

lihongru(金币+10): 谢谢,我对1stOpt不是特别熟悉,回头试一下。 2011-10-24 20:58:45
你的问题已变成隐函数拟合了,可以试下1stOpt,处理的很好。
2楼2011-10-24 09:36:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yqx1985

木虫 (著名写手)

云中仙

【答案】应助回帖

★ ★
微尘、梦想(金币+2): 谢谢参与应助 2011-10-24 17:46:23
lihongru(金币+10): 谢谢,我试着运行一下。 2011-10-24 21:00:32
你的表达式,经过转化不就是下面的形式吗?
x=e^[(y-a)/k]+ky;
你可以在matlab中建立一个函数
function y=fun(x,p)
a=p(1);k=p(2);
y=e^((x-a)./k)+k*x;
end
进而你可以用nlinfit函数进行非参数拟合
options = statset('Robust','on');
[beta,r,J,Sigma,mse] = nlinfit(x,y,@fun,rand(1,2),options);
即可得到参数的估计值,当然,你也可以重新定义函数,采用最小二乘的方法进行参数估计。
人面不知何时去,桃花依旧笑春风
3楼2011-10-24 11:24:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lihongru

金虫 (小有名气)

我试着用另一种方法解了一下,就是我知道k的大概范围,然后程序如下:
k=6:0.1:15%另一种求k值的方法
g=length(k);
for i=1:g
d0=d-k(i)*s;
lnd0=log(d0);
X0=[lnd0,DT,cons];
p=X0\lns;
m=p(1)-k(i);
f=abs(m);
if f>=delt
    return
else
end
end
p
可是运行不出结果,也不知程序错在什么地方。
4楼2011-10-24 21:04:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lihongru

金虫 (小有名气)

原始的要拟合的方程是lns=kln(d-k*s)+a*DT+c,s、d和DT是已知的三个列向量,要拟合k、a和c,若DT固定后就成了一个隐函数了。不知采用上边的方法可行不可行。
5楼2011-10-24 21:13:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lihongru

金虫 (小有名气)

上面程序运行不出来,用如下程序解决了
delt=1*10^-4;%设定迭代终止值
k=6:0.1:15;%另一种求k值的方法
f=1;
i=0;
if f>=delt
    i=i+1;
    d0=d-k(i)*s;
    lnd0=log(d0);
    X0=[lnd0,DT,cons];
    p=X0\lns;
    m=p(1)-k(i);
    f=abs(m);
end
p
不知是不是正确
6楼2011-10-24 22:04:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yqx1985

木虫 (著名写手)

云中仙


jjdg(金币+1): 感谢支持 2011-10-25 00:16:11
引用回帖:
3楼: Originally posted by yqx1985 at 2011-10-24 11:24:04:
你的表达式,经过转化不就是下面的形式吗?
x=e^[(y-a)/k]+ky;
你可以在matlab中建立一个函数
function y=fun(x,p)
a=p(1);k=p(2);
y=e^((x-a)./k)+k*x;
end
进而你可以用nlinfit函数进行非参数拟合
opt ...

have a try
人面不知何时去,桃花依旧笑春风
7楼2011-10-24 23:54:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lihongru

金虫 (小有名气)

最后用如下程序解决了
delt=1*10^-4;%设定迭代终止值
k=6:0.00001:15;%另一种求k值的方法
g=length(k);
f=1;
i=0;
while f>=delt
  i=i+1;
  d0=d-k(i)*s;
  lnd0=log(d0);
  X0=[lnd0,DT,cons];
  p=X0\lns;
  m=p(1)-k(i);
  f=abs(m);
end
p
i
就是整体感觉比较笨重,如果用非线性拟合的话,可能会更好,感谢楼上两位的帮助!
8楼2011-10-26 08:05:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 lihongru 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 289求调剂 +5 L1ttleTiger 2026-04-04 5/250 2026-04-11 10:47 by zhq0425
[考研] 086000调剂 +5 十七sa 2026-04-07 5/250 2026-04-11 10:38 by 紫曦紫棋
[考研] 284求调剂 +8 archer.. 2026-04-09 9/450 2026-04-11 10:35 by zhq0425
[考研] 296求调剂 +13 汪!?! 2026-04-10 15/750 2026-04-11 10:31 by 逆水乘风
[考研] 0854调剂 +8 950824he@ 2026-04-09 8/400 2026-04-11 10:11 by zhq0425
[考研] 277 数一104,学硕,求调剂 +19 瓶子PZ 2026-04-09 21/1050 2026-04-11 09:39 by 逆水乘风
[考研] 326求调剂 +5 Shansyn 2026-04-10 5/250 2026-04-10 22:23 by 猪会飞
[考研] 083200 305分 求二轮调剂 不接受跨专业 +9 Claireyyyy 2026-04-09 10/500 2026-04-10 21:21 by Claireyyyy
[考研] 265求调剂 +12 风说她早忘了 2026-04-10 13/650 2026-04-10 18:56 by chemisry
[考研] 336材料与化工085600求调剂 +21 水星记infp 2026-04-05 24/1200 2026-04-10 15:28 by luoyongfeng
[考研] 调剂 +19 不逢春 2026-04-05 20/1000 2026-04-10 10:15 by may_新宇
[考研] 一志愿厦大生物学332求调剂 +10 池池池池池池 2026-04-08 10/500 2026-04-09 17:10 by 独醉梦孤城
[考研] 353求调剂 +8 晴空万里air 2026-04-07 8/400 2026-04-09 00:18 by GouQ
[考研] 材料调剂 +14 一样YWY 2026-04-06 14/700 2026-04-08 23:00 by 猪会飞
[考研] 机械工程313分找工科调剂 +3 双一流本科机械 2026-04-08 3/150 2026-04-08 20:41 by 土木硕士招生
[考研] 一志愿郑州大学085600求调剂 +21 吃的不少 2026-04-05 24/1200 2026-04-08 16:47 by sunhuadong
[考研] 344求调剂 +11 魏子per 2026-04-07 11/550 2026-04-07 23:01 by JourneyLucky
[考研] 材料调剂 +13 汉123456 2026-04-07 14/700 2026-04-07 22:53 by 来看流星雨10
[考研] 调剂 +4 mcbbc 2026-04-06 5/250 2026-04-07 12:33 by upczlm1989
[考研] 377求调剂 +6 by.ovo 2026-04-05 6/300 2026-04-05 22:18 by dongzh2009
信息提示
请填处理意见