声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2593|回复: 7

[绘图技巧] 求助高手:已知极值点 如何应用matlab拟合出曲线?

[复制链接]
发表于 2011-5-17 18:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
采用matlab来求取已知曲线的极值点的方式有很多种,应用find函数,应用peak,或者两两相比等,那么反过来,已知极值点的序列,如何应用matlab来拟合还原得到曲线,并且保持信号在极值点处得一阶可导性呢?还望各位高手不吝赐教~
回复
分享到:

使用道具 举报

发表于 2011-5-17 21:55 | 显示全部楼层
回复 1 # bearkingfang 的帖子

用cftool应该可以吧
发表于 2011-5-18 00:49 | 显示全部楼层
发表于 2011-5-18 00:55 | 显示全部楼层
我也不是很清楚lz的意思,用cftool不能保证通过每一个极值点,只能画出一个近似的曲线,

  1. rm = rmx(:);                               %x轴数据
  2. r2 = r2y(:)                                    %y轴数据
  3. ft_ = fittype('fourier6');                %匹配形式 在此是fourier6型的sin曲线
  4. % Fit this model using new data
  5. cf_ = fit(rm,r2,ft_);
  6. % Plot this fit
  7. h_ = plot(cf_,'fit',0.95);
  8. set(h_(1),'Color',[1 0 0],'LineStyle','-', 'LineWidth',1,'Marker','none', 'MarkerSize',6);

复制代码
这段是从cftool中考出来的,直接用就可以了。可以看下效果。

 楼主| 发表于 2011-5-18 11:24 | 显示全部楼层
多谢321forever 提供的想法,以及ChaChing 予以的关注
可能我的问题没有表述清楚:
打个比方,假如自己设定四个极值点(大小间隔而出),比如(1,3),(2,0),(3,9),(5,-1),然后拟合一条曲线在[0.5 5.5]之间,满足上述四个点为极值点即可~拟合曲线的数值间隔大致取0.01左右~关键目前的困难是要让拟合的曲线满足极值条件,不知道有没有matlab函数直接可以实现,还是需要自己定义各种限制条件然后去做比较~求有高人加以指点啊
 楼主| 发表于 2011-5-18 11:49 | 显示全部楼层
好吧,我突然发现,直接用插值函数里头的cubic方式就可以控制极值条件,是我对matlab函数太不熟悉了,这么简单的问题都不会,很是惭愧~就此结贴

评分

1

查看全部评分

发表于 2011-5-19 00:18 | 显示全部楼层
怎感觉可能不是唯一解:@)
 楼主| 发表于 2011-5-19 00:50 | 显示全部楼层
是不是唯一解~我觉得用线性插值,然后滑动平均应该也可以实现,准备稍微试一下,看是否确实可行~~
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-19 08:24 , Processed in 0.066408 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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