找回密码
 注册
Simdroid-非首页
查看: 64|回复: 4

如何读取 cfit 类型返回值的数据

[复制链接]
发表于 2013-8-8 20:49:08 | 显示全部楼层 |阅读模式 来自 江苏南京
曲线拟合代码:
options = fitoptions('Method','Smooth',...
                     'SmoothingParam',0.0098);
[f,gof,out] =fit(cdate,pop,'smooth',options);
plot(f);

f为一个cfit类型的返回值,可以plot为曲线,请问如何导出数据?

万分期待帮助!
发表于 2013-8-8 23:59:40 | 显示全部楼层 来自 英国
Simdroid开发平台
  1. load census
  2. options = fitoptions('Method','Smooth',...
  3.                      'SmoothingParam',0.0098);
  4. [f,gof,out] =fit(cdate,pop,'smooth',options);
复制代码
观察下这个cfit:
  1. >> f

  2. f =

  3.      Smoothing spline:
  4.        f(x) = piecewise polynomial computed from p
  5.      Coefficients:
  6.        p = coefficient structure
复制代码
可见拟合的系数存储在了struct里。那么接下来:
  1. >> f.p

  2. ans =

  3.       form: 'pp'
  4.     breaks: [1x21 double]
  5.      coefs: [20x4 double]
  6.     pieces: 20
  7.      order: 4
  8.        dim: 1
复制代码
可以看出是分段拟合,同你先前'smooth'的选择相符。各段的系数存在f.p.coefs矩阵里,而各段的分界点则是f.p.breaks.
  1. >> f.p.coefs

  2. ans =

  3.     0.0001         0    0.1404    3.8566
  4.     0.0000    0.0021    0.1618    5.3318
  5.     0.0000    0.0027    0.2105    7.1840
  6.     0.0000    0.0041    0.2785    9.6063
  7.     0.0001    0.0051    0.3707   12.8348
  8.    -0.0000    0.0094    0.5162   17.1979
  9.    -0.0003    0.0089    0.6989   23.2825
  10.     0.0006   -0.0007    0.7800   30.8366
  11.    -0.0003    0.0175    0.9479   39.1713
  12.    -0.0001    0.0076    1.1989   50.0721
  13.     0.0002    0.0039    1.3135   62.6949
  14.    -0.0005    0.0104    1.4564   76.4359
  15.     0.0003   -0.0047    1.5135   91.5365
  16.    -0.0010    0.0032    1.4984  106.4647
  17.     0.0024   -0.0268    1.2620  120.7661
  18.     0.0001    0.0439    1.4324  133.0606
  19.    -0.0018    0.0472    2.3429  151.8816
  20.    -0.0005   -0.0079    2.7354  178.1917
  21.     0.0007   -0.0231    2.4252  204.2465
  22.     0.0000   -0.0009    2.1851  226.9289
复制代码
breaks和coefs可以用于重建出拟合的曲线。如果不了解二者的含义,可以通过doc mkpp查询。

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2013-8-12 15:51:21 | 显示全部楼层 来自 江苏南京
nwcwww 发表于 2013-8-8 23:59
观察下这个cfit:可见拟合的系数存储在了struct里。那么接下来:可以看出是分段拟合,同你先前'smooth'的选 ...

非常感谢!
回复 不支持

使用道具 举报

 楼主| 发表于 2013-8-12 18:43:55 | 显示全部楼层 来自 江苏南京
nwcwww 发表于 2013-8-8 23:59
观察下这个cfit:可见拟合的系数存储在了struct里。那么接下来:可以看出是分段拟合,同你先前'smooth'的选 ...

你好,请问曲线拟合工具箱中smoothing spline,对应参数例如p=4e-6,怎么转换成代码呢?我用1楼的代码结果并不对。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

 楼主| 发表于 2013-8-12 19:01:00 | 显示全部楼层 来自 江苏南京
本帖最后由 zhouzhouhua 于 2013-8-12 19:04 编辑
nwcwww 发表于 2013-8-8 23:59
观察下这个cfit:可见拟合的系数存储在了struct里。那么接下来:可以看出是分段拟合,同你先前'smooth'的选 ...
  1. options = fitoptions('Method','SmoothingSpline',...
  2.                      'SmoothingParam',4e-6);
  3. [f,gof,out] = fit(x,y,'SmoothingSpline',options);
  4. figure; plot(f,x, y);
复制代码
代码的意思与楼上的图一致,但出来结果却一点都不同,代码的结果几乎为直线,怎么回事呢?
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-6-3 19:54 , Processed in 0.042023 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表