求助高手:已知极值点 如何应用matlab拟合出曲线?
采用matlab来求取已知曲线的极值点的方式有很多种,应用find函数,应用peak,或者两两相比等,那么反过来,已知极值点的序列,如何应用matlab来拟合还原得到曲线,并且保持信号在极值点处得一阶可导性呢?还望各位高手不吝赐教~ 回复 1 # bearkingfang 的帖子用cftool应该可以吧 321forever 发表于 2011-5-17 21:55 static/image/common/back.gif
回复 1 # bearkingfang 的帖子
用cftool应该可以吧
how?:@) 我也不是很清楚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中考出来的,直接用就可以了。可以看下效果。
多谢321forever 提供的想法,以及ChaChing 予以的关注
可能我的问题没有表述清楚:
打个比方,假如自己设定四个极值点(大小间隔而出),比如(1,3),(2,0),(3,9),(5,-1),然后拟合一条曲线在之间,满足上述四个点为极值点即可~拟合曲线的数值间隔大致取0.01左右~关键目前的困难是要让拟合的曲线满足极值条件,不知道有没有matlab函数直接可以实现,还是需要自己定义各种限制条件然后去做比较~求有高人加以指点啊 好吧,我突然发现,直接用插值函数里头的cubic方式就可以控制极值条件,是我对matlab函数太不熟悉了,这么简单的问题都不会,很是惭愧~就此结贴 怎感觉可能不是唯一解:@) 是不是唯一解~我觉得用线性插值,然后滑动平均应该也可以实现,准备稍微试一下,看是否确实可行~{:{01}:}~
页:
[1]