如何在matlab中制作一个平滑的图

时间:2012-10-10 04:05:22

标签: matlab interpolation

我有大约100个数据点,这些数据点大多满足某个功能(但有些点已关闭)。我想在平滑的曲线中绘制所有这些点,但问题是点不均匀分布。那么无论如何要获得平滑的曲线?我想在两者之间插入一些点,但我想到的唯一方法是在两个数据点之间线性插入一些人工点。但这将显示一个非常奇怪的形状(像一些尖角)。那么更好的主意呢?感谢。

3 个答案:

答案 0 :(得分:3)

如果你或多或少知道实际曲线应该是什么,你可以尝试将曲线拟合到你的点(例如使用polyfit)。根据关闭的点数和距离,您可以通过最小二乘回归(这很容易实现)。如果您有太多异常值(或者它们太大/太小),您还可以使用robustfit函数尝试稳健回归(例如,最小绝对偏差拟合)。

如果您可以手动确定异常值,您还可以通过其他点拟合曲线以获得更好的结果,甚至在这些点上使用插值方法(例如MATLAB中的interp1)以获得更平滑的曲线。

答案 1 :(得分:0)

如果你知道哪个函数描述了你的数据,那么强健拟合(使用例如ROBUSTFIT或新的方便函数LINEARMODELNONLINEARMODELrobust选项)是如果您的数据中存在异常值,那么这是一个很好的方法。

如果您不知道描述数据的功能,但想要一个受异常值影响很小的平滑趋势线,那么来自File Exchange的SMOOTHN在我的体验中表现非常出色。

答案 2 :(得分:0)

您是否看过平滑花键的使用?与插值样条相似,但选择结点和系数以最小化最小平方误差函数。 Matlab central提供了一个很好的实现,我已经成功使用了它。