特定の機能をほぼ満たす約100のデータポイントがあります(ただし、一部のポイントはオフです)。これらすべての点を滑らかな曲線でプロットしたいのですが、問題は点が均一に分布していないことです。とにかく滑らかな曲線を得るためですか?間にいくつかの点を補間することを考えていますが、頭に浮かぶ唯一の方法は、2 つのデータ点の間に人工的な点を直線的に挿入することです。しかし、それはかなり奇妙な形を示します (鋭い角のような)。それで、何か良いアイデアはありますか?ありがとう。
3 に答える
実際の曲線がどうあるべきか多かれ少なかれわかっている場合は、その曲線をポイントに合わせることができます (例: を使用polyfit
)。オフになっているポイントの数と距離に応じて、最小二乗回帰を使用できます (作業はかなり簡単です)。外れ値が多すぎる (または大きすぎる/小さすぎる) 場合は、robustfit
関数を使用して堅牢な回帰 (最小絶対偏差フィッティングなど) を試すこともできます。
外れ値を手動で決定できる場合は、他の点に曲線を当てはめてより良い結果を得るか、これらのinterp1
点で補間法 (MATLAB など) を使用してより滑らかな曲線を得ることができます。
スムージング スプラインの使用を見たことがありますか? スプラインの補間に似ていますが、最小二乗誤差関数を最小化するようにノット ポイントと係数が選択されています。私が正常に使用したMatlab centralから入手できる優れた実装があります。
どの関数がデータを記述しているかがわかっている場合、データに外れ値がある場合は、ロバスト フィッティング (たとえば、 ROBUSTFITを使用するか、新しい便利な関数LINEARMODELおよびNONLINEARMODELオプションを使用) を使用することをお勧めしrobust
ます。
自分のデータを表す関数がわからないが、外れ値の影響をほとんど受けない滑らかなトレンドラインが必要な場合は、私の経験では File Exchange のSMOOTHNが優れた仕事をします。