24小时热门版块排行榜    

CyRhmU.jpeg
查看: 2356  |  回复: 28

liangyufei0

木虫 (著名写手)

[求助] 求助Matlab曲线拟合参数求解已有3人参与

求各位大侠帮助!!!十分感激!!
问题描述如下:
已知实验数据x=[0.0019 0.0031 0.0049 0.0093 0.0168 0.0330]; y=[0.698 0.609 0.520 0.350 0.223 0.130];
要用函数http://muchongimg.xmcimg.com/data/b ... _1456729728_303.png进行拟合,求拟合参数a、b、c。

求助Matlab曲线拟合参数求解
图片1.png
回复此楼

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

» 猜你喜欢

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

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

512095518

专家顾问 (正式写手)

引用回帖:
8楼: Originally posted by 514741735 at 2016-08-26 16:49:48
您好,在程序里怎么加入对拟合度的检验部分?比如输出均方差(RMSE)、残差平方和(SSE)、相关系数(R)、相关系数之平方(R^2)、决定系数(DC)、卡方系数(Chi-Square)、F统计(F-Statistic)。尤其是相关系数(R),谢谢了...

接着上面的代码继续写
yn = f(c,x);%计算得到拟合方程中x所对应的y值
r = corrcoef(y,yn);%计算相关系数
R = r(2);%相关系数R
R_square = R^2;%计算R平方

其他参数,你查统计学方面的数据,都是比较你原始数据的y值和计算得到yn之间的关系

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

没有极限,只有超越!
9楼2016-08-26 16:56:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

hellosu

木虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
liangyufei0: 金币+10, ★★★很有帮助, 很有帮助,但尚未解决,多谢! 2016-02-29 16:04:44
x=[0.0019 0.0031 0.0049 0.0093 0.0168 0.0330];
y=[0.698 0.609 0.520 0.350 0.223 0.130];
f=@(c,x) 1-((c(3)*x)^c(2)/(1+(c(3)*x)*c(2)))^c(1);
c0=[1 1 1];
[c,resnorm]=lsqcurvefit(f,c0,x,y);
plot(x,y,'.-',x,f(c,x),'r:x')
legend('原始数据','拟合数据')
2楼2016-02-29 15:40:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

liangyufei0

木虫 (著名写手)

引用回帖:
2楼: Originally posted by hellosu at 2016-02-29 15:40:38
x=;
y=;
f=@(c,x) 1-((c(3)*x)^c(2)/(1+(c(3)*x)*c(2)))^c(1);
c0=;
=lsqcurvefit(f,c0,x,y);
plot(x,y,'.-',x,f(c,x),'r:x')
legend('原始数据','拟合数据')...

首先感谢hellosu应助!
但程序运行出现如下错误,新手,不知如何解决,还请高手再次相助!
??? Error using ==> mpower
Matrix must be square.

Error in ==> @(c,x)1-((c(3)*x)^c(2)/(1+(c(3)*x)^c(2)))^c(1)


Error in ==> lsqncommon at 152
            fuser = funfcn{3}(xargin{:},varargin{:});

Error in ==> lsqcurvefit at 186
[x,Resnorm,FVAL,EXITFLAG,OUTPUT,LAMBDA,JACOB] = ...

Caused by:
    Failure in initial user-supplied objective function evaluation. LSQCURVEFIT cannot continue.
3楼2016-02-29 16:03:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hellosu

木虫 (小有名气)

引用回帖:
3楼: Originally posted by liangyufei0 at 2016-02-29 16:03:15
首先感谢hellosu应助!
但程序运行出现如下错误,新手,不知如何解决,还请高手再次相助!
??? Error using ==> mpower
Matrix must be square.

Error in ==> @(c,x)1-((c(3)*x)^c(2)/(1+(c(3)*x)^c(2 ...

clear
clc
x=[0.0019 0.0031 0.0049 0.0093 0.0168 0.0330];
y=[0.698 0.609 0.520 0.350 0.223 0.130];
f=@(c,x) (1-((c(3).*x).^c(2)/(1+(c(3).*x).*c(2))).^c(1));
c0=[1 1 1];
[c,resnorm]=lsqcurvefit(f,c0,x,y);
plot(x,y,'.-',x,f(c,x),'r:x')
legend('原始数据','拟合数据')

%%%这样运行后还是出错,可能你的数据点太少了
4楼2016-02-29 19:46:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

512095518

专家顾问 (正式写手)

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
liangyufei0: 金币+5, ★★★很有帮助, 很有帮助,多谢! 2016-03-03 08:53:37
二楼的方法正确,但是拟合是数值运算,所以在构造函数f时应该采用点除和点乘这类元素运算,而不是矩阵运算。楼主直接运行下面的函数不会出错
clear
clc
x=[0.0019 0.0031 0.0049 0.0093 0.0168 0.0330];
y=[0.698 0.609 0.520 0.350 0.223 0.130];
f=@(c,x) (1-((c(3).*x).^c(2)./(1+(c(3).*x).*c(2))).^c(1));
c0=[1 1 1];
[c,resnorm]=lsqcurvefit(f,c0,x,y);
plot(x,y,'.-',x,f(c,x),'r:x')
legend('原始数据','拟合数据')
没有极限,只有超越!
5楼2016-03-01 16:58:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

512095518

专家顾问 (正式写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
liangyufei0: 金币+15, ★★★★★最佳答案, 多谢大侠,结果很好! 2016-03-03 08:53:17
matlab拟合程度的选择与初始值选择有很大的关系。我改下初始值,这个拟合程度非常好。
a=0.770311398382774       
b=1.02743657844741       
c=142.278261696316

clear,clc
x=[0.0019 0.0031 0.0049 0.0093 0.0168 0.0330];
y=[0.698 0.609 0.520 0.350 0.223 0.130];
f=@(c,x) (1-((c(3).*x).^c(2)./(1+(c(3).*x).*c(2))).^c(1));
c0=[1 1 100];
c=lsqcurvefit(f,c0,x,y);
plot(x,y,'.-',x,f(c,x),'r:x')
legend('原始数据','拟合数据')
没有极限,只有超越!
6楼2016-03-01 17:09:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

独孤神宇

版主 (知名作家)

【答案】应助回帖

感谢参与,应助指数 +1
看图
求助Matlab曲线拟合参数求解-1
QQ截图20160302200328.jpg

数值计算
7楼2016-03-02 20:04:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

514741735

银虫 (小有名气)

引用回帖:
6楼: Originally posted by 512095518 at 2016-03-01 17:09:46
matlab拟合程度的选择与初始值选择有很大的关系。我改下初始值,这个拟合程度非常好。
a=0.770311398382774       
b=1.02743657844741       
c=142.278261696316

clear,clc
x=;
y=;
f=@(c,x) (1-((c(3).*x).^c(2)./( ...

您好,在程序里怎么加入对拟合度的检验部分?比如输出均方差(RMSE)、残差平方和(SSE)、相关系数(R)、相关系数之平方(R^2)、决定系数(DC)、卡方系数(Chi-Square)、F统计(F-Statistic)。尤其是相关系数(R),谢谢了
自助者天助
8楼2016-08-26 16:49:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

514741735

银虫 (小有名气)

送红花一朵
引用回帖:
9楼: Originally posted by 512095518 at 2016-08-26 16:56:57
接着上面的代码继续写
yn = f(c,x);%计算得到拟合方程中x所对应的y值
r = corrcoef(y,yn);%计算相关系数
R = r(2);%相关系数R
R_square = R^2;%计算R平方

其他参数,你查统计学方面的数据,都是比较你原始数 ...

谢谢啦
自助者天助
10楼2016-08-26 18:42:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 Lz_jiang 的主题更新
信息提示
请填处理意见