私は2つの曲線を比較するプログラムに取り組んでいます(ダイオード出力に起因するため、その電圧/電流曲線)。
この 2 つの曲線の間の面積を計算したいと思います (青色の曲線は最初のダイオードで、赤色の曲線は 2 番目のダイオードです)。
各曲線には 51 個のデータ ポイントがあります (常に同じ量のデータ ポイントがあります)。私が現時点でやっていることは次のようなものです:
public double CalculateArea(double[,] pin1, double[,] pin2)
{
double voltageArea = 0;
double currentArea = 0; //Current (Vertical axis) not yet!
double max = 0;
double min = 0;
for (int i = 0; i < pin1.GetLength(0); i++)
{
max = Math.Max(Math.Abs(pin1[i, 0]), Math.Abs(pin2[i, 0]));
min = Math.Min(Math.Abs(pin1[i, 0]), Math.Abs(pin2[i, 0]));
voltageArea += max - min;
}
return voltageArea;
}
このコードは、Current (縦軸) で何もしないことを念頭に置いて、何とか機能します。結果が 0.05 などの 0 に近い場合、曲線間の差は無視できます。しかし、これは正しい方法ではないと確信しています。私が書いた方法の結果がどうなるかまったくわかりません...電圧ポイントのみの違いのようです。
この方法の改善にご協力いただければ幸いです。