我有大约 100 个数据点,它们大多满足某个功能(但有些点已关闭)。我想将所有这些点绘制成一条平滑的曲线,但问题是这些点分布不均匀。无论如何,这是为了获得平滑的曲线吗?我正在考虑在两者之间插入一些点,但我想到的唯一方法是在两个数据点之间线性插入一些人造点。但这会显示出一个非常奇怪的形状(比如一些尖角)。那么有更好的主意吗?谢谢。
问问题
8431 次
3 回答
3
如果您或多或少知道实际曲线应该是什么,您可以尝试将该曲线拟合到您的点(例如使用polyfit
)。根据偏离的点数和距离,您可以使用最小二乘回归(这很容易开始工作)。如果您有太多异常值(或者它们太大/太小),您还可以使用该robustfit
函数尝试稳健回归(例如最小绝对偏差拟合)。
如果您可以手动确定异常值,您还可以通过其他点拟合曲线以获得更好的结果,甚至可以interp1
在这些点上使用插值方法(例如在 MATLAB 中)以获得更平滑的曲线。
于 2012-10-10T05:44:17.920 回答
0
如果您知道哪个函数描述了您的数据,那么稳健拟合(例如使用ROBUSTFIT或带有选项的新的便捷函数LINEARMODEL和NONLINEARMODELrobust
)是一个好方法,如果您的数据中有异常值。
如果您不知道描述数据的函数,但想要一条不受异常值影响的平滑趋势线,那么根据我的经验,来自 File Exchange 的SMOOTHN做得很好。
于 2012-10-10T12:54:10.417 回答
0
你看过平滑样条曲线的使用吗?类似于插值样条,但选择的节点和系数是为了最小化最小二乘误差函数。Matlab 中心提供了一个很好的实现,我已经成功使用它。
于 2012-10-10T13:42:32.160 回答