Matlab、AUC(曲線下面積)の計算方法について教えてください。

2列N行のファイルdata.txtがあるのですが、以下のような感じです。

0.009943796 0.4667975
0.009795735 0.46777886
0.009623984 0.46897832
0.009564759 0.46941447
0.009546991 0.4703958
0.009428543 0.47224948
0.009375241 0.47475737
0.009298249 0.4767201
[...]

ファイル内の数個の値は、1つの点の座標(x,y)に対応しています。 プロットすると、この点は曲線を生成します。この曲線の曲線下面積(AUC)を計算したい。

そこで、データをロードする。

data = load("data.txt");
X = data(:,1);
Y = data(:,2);

つまり、X にはすべての点の x 座標が、Y にはすべての y 座標が格納されています。

曲線下面積 (AUC) はどのように計算するのですか?

ソリューション

最も簡単な方法は、台形規則関数 trapz です。

しかし、MATLABには数値データをSimpsonの法則で積分する機能は組み込まれていません。(& xが定常的に増加しないx/yデータに対してどのように使うかはわかりません)

解説 (3)

を追加するだけです。 AUC = trapz(X,Y)を追加します。 をプログラムに追加するだけです。 を追加すると、曲線下の面積が得られます。

解説 (0)

みたいなことができるんです。

AUC = sum((Y(1:end-1)+Y(2:end))/2.*...
  (X(2:end)-X(1:end-1)));
解説 (1)