我正在开发一个比较两条曲线的程序(由二极管输出导致其电压/电流曲线)。
我想计算这两条曲线之间的面积(蓝色曲线是第一个二极管,红色是第二个)。
每条曲线有 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;
}
该代码以某种方式起作用,请记住我对当前(垂直轴)不做任何事情。如果结果接近 0,例如 0.05,那么曲线之间的差异是可以忽略的。但我确信这不是正确的方法,我完全不知道我写的方法的结果是什么......似乎只是电压点之间的差异。
如果你能帮助我改进这种方法,我真的很感激。