matlabのsmooth関数の使い方を説明してください。
MATLAB の smooth 関数は信号をスムージングするために使用されます。スムージングとは、ノイズを取り除いたり、信号を滑らかにしたりするための信号処理技術です。
smooth関数の基本文法は次のようになります。
smoothed_data = smooth(data, span, method)
データは平滑化対象の入力データで、ベクトル、行列、多次元配列が指定できます。spanは平滑ウィンドウサイズで、考慮する近傍データ点数を表します。methodは平滑化手法で、「moving」、「lowess」、「loess」、「sgolay」、「rlowess」を指定できます。
- 移動平均法を利用する「移動」手法は、各データ点をその前後指定された数の近接するデータの平均値に置き換える。
- 「lowess」および「loess」の手法では、局部加重回帰を使用して、局部的なデータに基づいて局部多項式曲線を適合させて、データを平滑化しています。
- サヴィッツキーーゴライ法は近傍のデータ点に多項式を適合させデータを平滑化することで、サヴィッツキーーゴライフィルタを使用します。
- 「rlowess」メソッドは「lowess」メソッドと同様にロバスト局所重み付き回帰を使用しますが、外れ値に対して、よりロバストです。
スムージング処理したデータがsmooth関数から返されます。データによって出力形式を選択できます。つまり、入力がベクトルならベクトルが出力され、入力が行列なら行列が出力されます。
スムージング関数を使用したデータの平滑化例を示します。
x = 1:10;
y = [1, 3, 2, 4, 6, 5, 8, 7, 9, 10];
smoothed_y = smooth(y, 3, 'moving');
plot(x, y, 'o', x, smoothed_y, '-')
生のデータ点と移動平均で平滑化したカーブを描画します。