我正在使用PeakFind算法从数组中查找峰值(最大值)。
我在控制台上得到了结果。我想要一些荧光笔在JFreeChart上显示。
任何人都可以帮助我吗?
以下是peak_finder的代码
public class PeakAlgorithm
{
static double[] xArray;
static double[] yArray;
static double[] derivative;
public static void peak_Algorithm(double[] x,double[] y)
{
xArray=new double[x.length];
yArray=new double[y.length];
xArray=x;
yArray=y;
derivative=new double[xArray.length-1];
derivative=derivativeXY(xArray,yArray);
for(int i=0;i<derivative.length-1;i++)
{
if((sign(derivative[i])>(sign(derivative[i+1])))&derivative[i]>0.5)
{
System.out.println(xArray[i]+" "+yArray[i]);
}
}
}
public static int sign(double derivative2)
{
int result=0;
if (derivative2 != derivative2)
if (derivative2 == 0)
result= 0;
derivative2 *= Double.POSITIVE_INFINITY;
if (derivative2 == Double.POSITIVE_INFINITY)
result=1;
if (derivative2 == Double.NEGATIVE_INFINITY)
result=-1;
return result;
}
public static double[] derivativeXY(double[] x,double[] y)
{
derivative=new double[x.length-1];
for (int j=1;j<derivative.length-1;j++)
{
derivative[j]=(y[j+1]-y[j-1]) / ((x[j+1]-x[j-1]));
}
return derivative;
}
}