24小时热门版块排行榜    

查看: 2569  |  回复: 29

飞也如铃

新虫 (小有名气)

[求助] 求助大侠帮忙,有关matlab模拟数据

x = [0.768;
0.711;
0.685;
0.671;
0.659;
0.657;
0.655;
0.654;
0.653;
0.654];

y = [4.584;
4.375;
4.234;
4.128;
4.041;
3.972;
3.913;
3.861;
3.815;
3,774];

上面是x,y的数据,公式是
请问哪位大侠帮忙给编辑一下公式代码啊,我自己用matlab模拟不出来,请哪位好心人帮帮忙!
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

juloong

木虫 (职业作家)

X射线衍/散射测试

【答案】应助回帖

飞也如铃(金币+2): 非常感谢您提供的这个信息,但是我找不到我需要的公式,请问我的公式适合fitting里面的哪个类型的公式呢,谢谢回复! 2011-11-22 21:58:19
matlab里面有个cftool工具,拟合起来非常方便的
2楼2011-11-22 21:15:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

juloong

木虫 (职业作家)

X射线衍/散射测试

【答案】应助回帖

拟合出来的结果
General model:
       f(x) = a+b*log(1-b*x)+(1-b)*log(1-b*x+x)
Coefficients (with 95% confidence bounds):
       a =      -1.309  (-9942, 9939)
       b =      -117.5  (-1.173e+006, 1.173e+006)

Goodness of fit:
  SSE: 0.4103
  R-square: 0.337
  Adjusted R-square: 0.2541
  RMSE: 0.2265
3楼2011-11-22 21:25:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

juloong

木虫 (职业作家)

X射线衍/散射测试

【答案】应助回帖

用这个式子拟合貌似不好
4楼2011-11-22 21:27:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

juloong

木虫 (职业作家)

X射线衍/散射测试

【答案】应助回帖

★ ★
飞也如铃(金币+2): 谢谢您的回复,可否把matlab里你输入的所有信息发到帖子了呢,我自己试了试,不知道是哪里出问题了,拟合不出来,谢谢! 2011-11-22 22:15:30
dbb627(金币+2): 感谢应助 2011-11-22 22:57:51
重新拟合了一下
General model:
       f(x) = a+b*log(1-b*x)+(1-b)*log(1-b*x+x)
       where x is normalized by mean 0.6767 and std 0.03709
Coefficients (with 95% confidence bounds):
       a =       4.203  (4.157, 4.25)
       b =       0.294  (0.2726, 0.3154)

Goodness of fit:
  SSE: 0.03251
  R-square: 0.9475
  Adjusted R-square: 0.9409
  RMSE: 0.06375

这个好点
5楼2011-11-22 21:32:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

飞也如铃

新虫 (小有名气)

引用回帖:
5楼: Originally posted by juloong at 2011-11-22 21:32:47:
重新拟合了一下
General model:
       f(x) = a+b*log(1-b*x)+(1-b)*log(1-b*x+x)
       where x is normalized by mean 0.6767 and std 0.03709
Coefficients (with 95% confidence bounds):
       a =  ...

x = [0.768;
0.711;
0.685;
0.671;
0.659;
0.657;
0.655;
0.654;
0.653;
0.654];

y = [4.584;
4.375;
4.234;
4.128;
4.041;
3.972;
3.913;
3.861;
3.815;
3.774];

plot(x,y,'*')

f = fittype('a+b*log(1-b*x)+(1-b)*log(1-b*x+x)');

%拟合函数
[c2,gof2] = fit(x,y,f)

% 显示拟合曲线与数据点的结果
plot(c2,'m')  % 绘制拟合曲线
hold on,plot(x,y,'*') %绘制原数据点
求大侠现身帮忙,我用上面的代码放到matlab里面,但是模拟出来的是一条直线,我的数据散点图是一曲线,可是我只会上面这个代码,请问大侠你用的代码是什么,能否发我一下呢?
6楼2011-11-23 09:31:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

juloong

木虫 (职业作家)

X射线衍/散射测试

【答案】应助回帖

飞也如铃(金币+2): 谢谢您的回复,按照这个步骤拟合出来的效果不是很好,没有你第二次给的拟合效果好,请问你第二次的拟合是怎么弄的? 2011-11-23 11:05:46
引用回帖:
6楼: Originally posted by 飞也如铃 at 2011-11-23 09:31:18:
x = [0.768;
0.711;
0.685;
0.671;
0.659;
0.657;
0.655;
0.654;
0.653;
0.654];

y = [4.584;
4.375;
4.234;
4.128;
4.041;
3.972;
3.913;
3.861;
3.815;
3.774];

plot(x,y,'*')

f = ...

不需要这样写代码的,matlab有内建 的拟合工具cftool

过程如下
首先,在matlab中输入x,y的值
x = [0.768;0.711;0.685;0.671;0.659;0.657;0.655;0.654;0.653;0.654];
y = [4.584;4.375;4.234;4.128;4.041;3.972;3.913;3.861;3.815;3.774];

然后,键入命令cftool,这时会出现工具窗口,点data键,x data和y data分别选择x,y, 再点creat data set。然后关闭窗口,再回到工具窗口

然后fitting - new fit- type of fit - custmos equations
然后输入你的拟合公式,拟合就行了
7楼2011-11-23 10:30:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

飞也如铃

新虫 (小有名气)

引用回帖:
7楼: Originally posted by juloong at 2011-11-23 10:30:35:
不需要这样写代码的,matlab有内建 的拟合工具cftool

过程如下
首先,在matlab中输入x,y的值
x = [0.768;0.711;0.685;0.671;0.659;0.657;0.655;0.654;0.653;0.654];
y = [4.584;4.375;4.234;4.128;4.041;3 ...

恩,非常感谢您的回复,我尝试了一下,给出的结果是
我自己拟合的效果不是很好,你拟合的这个效果比较好,请问你是调试过了吗,具体是怎么弄的呢?
这个是你拟合的数据
General model:
       f(x) = a+b*log(1-b*x)+(1-b)*log(1-b*x+x)
       where x is normalized by mean 0.6767 and std 0.03709
Coefficients (with 95% confidence bounds):
       a =       4.203  (4.157, 4.25)
       b =       0.294  (0.2726, 0.3154)

Goodness of fit:
  SSE: 0.03251
  R-square: 0.9475
  Adjusted R-square: 0.9409
  RMSE: 0.06375
8楼2011-11-23 10:55:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

juloong

木虫 (职业作家)

X射线衍/散射测试

【答案】应助回帖

多调一下参数选项,肯定能找到合适的值
9楼2011-11-23 11:53:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dbb627

荣誉版主 (著名写手)

【答案】应助回帖

飞也如铃(金币+2): 谢谢您的回复,把你的代码放到matlab里能出来上面的结果,但是没有出来非线性拟合图,我想要这个非线性拟合图,请问怎么弄呢? 2011-11-28 16:05:44
我给你写了一个
你的方程是lg应该是10为底对数
matlab里面log表示ln自然对数
CODE:
x = [0.768;
0.711;
0.685;
0.671;
0.659;
0.657;
0.655;
0.654;
0.653;
0.654];

y = [4.584;
4.375;
4.234;
4.128;
4.041;
3.972;
3.913;
3.861;
3.815;
3.774];
opts = fitoptions('Method','Nonlinear','Normalize','On');
opts.StartPoint =  [1 0.1];
ftype = fittype('a+b*log10(1-b*x)+(1-b)*log10(1-b*x+x)','options',opts);
[fresult,gof] = fit(x,y,ftype)

结果
fresult =

     General model:
     fresult(x) = a+b*log10(1-b*x)+(1-b)*log10(1-b*x+x)
       where x is normalized by mean 0.6767 and std 0.03709
     Coefficients (with 95% confidence bounds):
       a =       4.167  (4.126, 4.208)
       b =      0.1139  (0.05999, 0.1677)

gof =

           sse: 0.0207
       rsquare: 0.9665
           dfe: 8
    adjrsquare: 0.9623
          rmse: 0.0509
The more you learn, the more you know, the more you know, and the more you forget. The more you forget, the less you know. So why bother to learn.
10楼2011-11-23 23:48:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 飞也如铃 的主题更新
信息提示
请填处理意见