bearkingfang 发表于 2011-5-17 18:37

求助高手:已知极值点 如何应用matlab拟合出曲线?

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

321forever 发表于 2011-5-17 21:55

回复 1 # bearkingfang 的帖子

用cftool应该可以吧

ChaChing 发表于 2011-5-18 00:49

321forever 发表于 2011-5-17 21:55 static/image/common/back.gif
回复 1 # bearkingfang 的帖子

用cftool应该可以吧

how?:@)

321forever 发表于 2011-5-18 00:55

我也不是很清楚lz的意思,用cftool不能保证通过每一个极值点,只能画出一个近似的曲线,

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

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

bearkingfang 发表于 2011-5-18 11:24

多谢321forever 提供的想法,以及ChaChing 予以的关注
可能我的问题没有表述清楚:
打个比方,假如自己设定四个极值点(大小间隔而出),比如(1,3),(2,0),(3,9),(5,-1),然后拟合一条曲线在之间,满足上述四个点为极值点即可~拟合曲线的数值间隔大致取0.01左右~关键目前的困难是要让拟合的曲线满足极值条件,不知道有没有matlab函数直接可以实现,还是需要自己定义各种限制条件然后去做比较~求有高人加以指点啊

bearkingfang 发表于 2011-5-18 11:49

好吧,我突然发现,直接用插值函数里头的cubic方式就可以控制极值条件,是我对matlab函数太不熟悉了,这么简单的问题都不会,很是惭愧~就此结贴

ChaChing 发表于 2011-5-19 00:18

怎感觉可能不是唯一解:@)

bearkingfang 发表于 2011-5-19 00:50

是不是唯一解~我觉得用线性插值,然后滑动平均应该也可以实现,准备稍微试一下,看是否确实可行~{:{01}:}~
页: [1]
查看完整版本: 求助高手:已知极值点 如何应用matlab拟合出曲线?