24小时热门版块排行榜    

查看: 2978  |  回复: 5

yangtree

银虫 (初入文坛)

[求助] 如何用matlab对四维数据进行非线性拟合?

小弟在数据处理时,需要对四维数据进行非线性拟合,以得到需要的参数,不知如何操作,请大侠出手相助!问题在附图中,请将具体的操作步骤及编制的程序附上,谢谢!急用,在线等!

问题.jpg
回复此楼

» 猜你喜欢

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

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chunbendan

铜虫 (初入文坛)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ...
感谢参与,应助指数 +1
yangtree: 金币+60, ★★★很有帮助, 您好,谢谢您的帮助,麻烦您告知参数的范围如何限制,见3楼,然后我将会把所有的悬赏金币给您! 2013-04-28 10:21:44
这个很简单啊,用lsqcurvefit或者lsqnonlin都可以。比如:

function ydata = myfun(a,xdata)

ydata=xdata(:,1).*xdata(:,2).*xdata(:,3)./(a(1)*ones(size(xdata(:,1)))... +xdata(:,1))./(a(2)*ones(size(xdata(:,2)))+...
    xdata(:,2))./(a(3)*ones(size(xdata(:,3)))+xdata(:,3));

x=10*rand(10,3)
y=10*rand(10,1)
a=[1,1,1]
a_final=lsqcurvefit(@myfun,a,x,y)

a_final就是结果啦。

x =

    3.5166    0.7585    1.6218
    8.3083    0.5395    7.9428
    5.8526    5.3080    3.1122
    5.4972    7.7917    5.2853
    9.1719    9.3401    1.6565
    2.8584    1.2991    6.0198
    7.5720    5.6882    2.6297
    7.5373    4.6939    6.5408
    3.8045    0.1190    6.8921
    5.6782    3.3712    7.4815


y =

    4.5054
    0.8382
    2.2898
    9.1334
    1.5238
    8.2582
    5.3834
    9.9613
    0.7818
    4.4268


a =

     1     1     1


Local minimum possible.

lsqcurvefit stopped because the final change in the sum of squares relative to
its initial value is less than the default value of the function tolerance.




b =

   -2.3826   -0.2813   -0.2945
2楼2013-04-26 09:03:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yangtree

银虫 (初入文坛)

引用回帖:
2楼: Originally posted by chunbendan at 2013-04-26 09:03:18
这个很简单啊,用lsqcurvefit或者lsqnonlin都可以。比如:

function ydata = myfun(a,xdata)

ydata=xdata(:,1).*xdata(:,2).*xdata(:,3)./(a(1)*ones(size(xdata(:,1)))... +xdata(:,1))./(a(2)*ones(size(xd ...

谢谢您的帮助,另外在您这个程序中,怎样保证a1、a2、a3的拟合值均处于允许的取值范围内,请见附图。本人刚开始学着用matlab,请解答的详细些,谢谢您!
3楼2013-04-26 09:37:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chunbendan

铜虫 (初入文坛)

【答案】应助回帖

引用回帖:
3楼: Originally posted by yangtree at 2013-04-26 09:37:36
谢谢您的帮助,另外在您这个程序中,怎样保证a1、a2、a3的拟合值均处于允许的取值范围内,请见附图。本人刚开始学着用matlab,请解答的详细些,谢谢您!...

这个输出时可以看到拟合误差和方差,也可以设置终止条件,即达到某一精度或者一定循环次数就停止。现在没在电脑旁,晚上回去告诉你

[ 发自手机版 http://muchong.com/3g ]
4楼2013-04-28 16:27:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yangtree

银虫 (初入文坛)

引用回帖:
4楼: Originally posted by chunbendan at 2013-04-28 16:27:54
这个输出时可以看到拟合误差和方差,也可以设置终止条件,即达到某一精度或者一定循环次数就停止。现在没在电脑旁,晚上回去告诉你
...

多谢你了,能否说的更详细点,比如三个参数a1、a2、a3在拟合时应保证:1小于a1小于5,0.3小于a2小于0.8,10小于a2小于15,那么在编程时需如何设定限制条件?
5楼2013-04-30 22:39:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chunbendan

铜虫 (初入文坛)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
yangtree: 金币+40, ★★★★★最佳答案, 谢谢您的帮助,前一段时间忙些事情,没上小木虫,金币给晚了,对不起! 2013-05-31 22:20:04
亲,前两天出去了。记得不会就去查帮助哦,帮助上写的很清楚
x = lsqcurvefit(fun,x0,xdata,ydata,lb,ub,options)
其中lb是下限,ub是上限,默认不写是无上限下限的,你输入时设置好lb和ub就可以了

function ydata = myfun(a,xdata)

ydata=xdata(:,1).*xdata(:,2).*xdata(:,3)./(a(1)*ones(size(xdata(:,1)))... +xdata(:,1))./(a(2)*ones(size(xdata(:,2)))+...
    xdata(:,2))./(a(3)*ones(size(xdata(:,3)))+xdata(:,3));

x=10*rand(10,3)
y=10*rand(10,1)
a=[1,1,1]
lb=[1 0.3 10];
ub=[5 0.8 15];
a_final=lsqcurvefit(@myfun,a,x,y,lb,ub)

这样就能算出来啦
6楼2013-05-01 15:38:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 yangtree 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 看来今天不会放榜了? +7 chengyan1220 2026-08-21 8/400 2026-08-21 15:19 by chengyan1220
[基金申请] 让我中一个面上吧! +11 大萍1987 2026-08-20 13/650 2026-08-21 14:48 by 20120902066
[基金申请] 感觉是下周放榜了 +7 angus9576 2026-08-17 12/600 2026-08-21 13:38 by weiyin
[基金申请] 只有每年这种时候来逛逛小木虫 +23 yaoyewhu2008 2026-08-20 25/1250 2026-08-21 12:19 by Poppy1104
[基金申请] 什么时候开奖? +7 CrisMessi 2026-08-18 7/350 2026-08-21 12:15 by weiyin
[基金申请] 时间戳又变了8-15 +15 archvillain 2026-08-15 27/1350 2026-08-21 11:32 by tim76
[基金申请] 科研孤儿太难了 +15 我4大白菜 2026-08-20 16/800 2026-08-21 11:07 by yming1319
[基金申请] 应该是下周三26日公布了吧? +4 哈哈蛤? 2026-08-21 4/200 2026-08-21 10:58 by Vivilian
[基金申请] 今天放榜没戏了吧 +9 yuleib84 2026-08-19 11/550 2026-08-21 10:06 by gltch
[基金申请] 时间戳今天,20号变了 +4 archvillain 2026-08-20 4/200 2026-08-21 08:10 by gatelove
[基金申请] 估计是周四 +3 archvillain 2026-08-18 3/150 2026-08-21 01:48 by jnhyjjm
[基金申请] 时间戳变了,能看出什么问题? +18 基诺咪客 2026-08-17 23/1150 2026-08-20 17:19 by Godzela
[基金申请] 重要消息,中午系统在维护 +11 yuleib84 2026-08-18 12/600 2026-08-20 11:09 by xskun
[教师之家] 为什么余额宝的年化利率越来越低?主要原因有哪些? +5 瞬息宇宙 2026-08-15 5/250 2026-08-19 20:23 by super2002521
[基金申请] 2027广东省杰青 +4 奶牛小黑 2026-08-15 10/500 2026-08-19 11:02 by wanfengnew
[基金申请] 朋友圈看到的 +6 wangzilk 2026-08-18 8/400 2026-08-19 10:55 by Haru815
[基金申请] 快农历七夕节了,轻松一下,男人悄悄话,女施主请不要进来。 +6 Tide man 2026-08-14 7/350 2026-08-19 09:56 by ZJTJZ
[基金申请] 明天放榜? +5 Shxjjxjkx 2026-08-18 5/250 2026-08-18 18:14 by -大大大大大-
[基金申请] 今天维护系统维护 祝所有人 高中 +8 gjjjzhong 2026-08-18 9/450 2026-08-18 13:01 by 家与远方
[基金申请] 93BebMhtakh前后11位开头都是大写 +4 且听虎啸 2026-08-17 5/250 2026-08-18 00:49 by 蔡棒棒菂
信息提示
请填处理意见