24小时热门版块排行榜    

查看: 2687  |  回复: 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 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考博] 26申博 +4 想申博! 2026-02-26 6/300 2026-03-01 17:32 by 想申博!
[考研] 化工专硕348,一志愿985求调剂 +5 弗格个 2026-02-28 8/400 2026-03-01 17:25 by sunny81
[考研] 0856求调剂285 +8 吕仔龙 2026-02-28 8/400 2026-03-01 17:25 by 刘兵
[考研] 0856化工专硕求调剂 +10 董boxing 2026-03-01 10/500 2026-03-01 17:19 by 刘兵
[考研] 化工专硕342,一志愿大连理工大学,求调剂 +3 kyf化工 2026-02-28 4/200 2026-03-01 16:49 by yywzz
[考研] 285求调剂 +8 满头大汗的学生 2026-02-28 8/400 2026-03-01 16:47 by caszguilin
[基金申请] 刚录用,没有期刊号,但是在线可看的论文可以放为代表作吗 10+3 arang1 2026-03-01 3/150 2026-03-01 16:43 by babero
[考研] 311求调剂 +6 亭亭亭01 2026-03-01 6/300 2026-03-01 15:41 by 324616
[考研] 课题组接收材料类调剂研究生 +3 gaoxiaoniuma 2026-02-28 4/200 2026-03-01 14:30 by jjj三跨
[考研] 298求调剂 +9 人间唯你是清欢 2026-02-28 12/600 2026-03-01 14:23 by Ducount.Y
[考研] 291分工科求调剂 +8 science饿饿 2026-03-01 9/450 2026-03-01 14:22 by Ducount.Y
[考研] 284求调剂 +6 天下熯 2026-02-28 6/300 2026-03-01 14:19 by Ducount.Y
[考研] 化工299分求调剂 一志愿985落榜 +4 嘻嘻(*^ω^*) 2026-03-01 4/200 2026-03-01 13:15 by wang_dand
[考研] 317一志愿华南理工电气工程求调剂 +6 Soliloquy_Q 2026-02-28 11/550 2026-03-01 11:14 by 歌liekkas
[论文投稿] Optics letters投稿被拒求助 30+3 luckyry 2026-02-26 4/200 2026-03-01 09:06 by babero
[考研] 298求调剂 +5 axyz3 2026-02-28 5/250 2026-03-01 06:45 by 刘兵
[考研] 272求调剂 +4 田智友 2026-02-28 4/200 2026-03-01 06:43 by 刘兵
[考研] 264求调剂 +3 巴拉巴拉根556 2026-02-28 3/150 2026-02-28 21:31 by gaoxiaoniuma
[考研] 276求调剂 +3 路lyh123 2026-02-28 4/200 2026-02-28 19:45 by 路lyh123
[硕博家园] 【博士招生】太原理工大学2026化工博士 +4 N1ce_try 2026-02-24 8/400 2026-02-26 08:40 by N1ce_try
信息提示
请填处理意见