There are many approaches to locating peaks Consider an arra
There are many approaches to locating peaks. Consider an array of data x[]. For this program, we define a peak as an element of the array that is a local maximum, greater than each of its neighbors by a factor of 2 or more. The first and last elements in an array have only one neighbor each, and by definition cannot be peaks. Hence, given this array x[] with 20 terms:
0.2000 0.5000 0.1000 0.1500 0.2000 0.1300 0.3000 0.2500 0.3000 0.3000
0.7000 0.2000 0.4500 0.1500 0.2000 0.8500 0.3000 0.6500 0.2000 0.1000
The peaks are at x[1] = 0.5, x[10] = 0.7, x[12] = 0.45, x[15] = 0.85, x[17] = 0.65.
Write a Java program that scans through an array of data, finds the peaks based on the criterion defined above, and sorts them into non-descending order. Here’s what the program should do:
Declare and initialize an array x[] of 20 floats.
float [] x = {0.2f, 0.5f, 0.1f, 0.15f, 0.2f, 0.13f, 0.3f, 0.25f, 0.3f, 0.3f,
0.7f, 0.2f, 0.45f, 0.15f, 0.2f, 0.85f, 0.3f, 0.65f, 0.2f, 0.1f};
Print the elements of x[], 10 on each line.
Then locate the peaks in x[], place them in an array peaks[]
Print the data for each peak.
A sample run:
% java FindPeaks
Data array:
0.2000 0.5000 0.1000 0.1500 0.2000 0.1300 0.3000 0.2500 0.3000 0.3000
0.7000 0.2000 0.4500 0.1500 0.2000 0.8500 0.3000 0.6500 0.2000 0.1000
5 peaks found:
0.5
0.7
0.45
0.85
0.65
After printing the elements of x[] , your program will first step through the elements of x[] , find each peak, and add each peak to the array peaks[] .
Solution
 /**
 * The java program FindPeaks that finds the peaks
 * of the given array x and prints the peaks
 * array to console
 * */
 //FindPeaks.java
 public class FindPeaks {  
    public static void main(String[] args) {
       
        //initialize variables
        int count=0;      
        int pIndex=0;
       
        //intialize float array
        float [] x = {0.2f, 0.5f, 0.1f, 0.15f, 0.2f,
                0.13f, 0.3f, 0.25f, 0.3f, 0.3f,
                0.7f, 0.2f, 0.45f, 0.15f, 0.2f,
                0.85f, 0.3f, 0.65f, 0.2f, 0.1f};
       
        //create a float array of given size of x
        float[] peaks=new float[x.length];
        System.out.println(\"Data array:\");
        //print data to console
        for (int i = 0; i < x.length; i++)
        {
            if((i+1)%10==0)
                System.out.println();
            else
                System.out.printf(\"%-8.4f\",x[i]);          
        }
       
       
        System.out.println(\"\ \");
        //find peaks
        for (int i = 1; i < x.length-1; i++)
        {
            float val=x[i];
            //checking condition of peak element
            if(val>2*x[i-1] && val>2*x[i+1])
            {
                peaks[pIndex]=val;
                pIndex++;
                count++;
            }
        }
        //print peaks to console
        System.out.println(count+\" peaks found:\");
        for (int i = 0; i < count; i++)
        {
            System.out.println(peaks[i]);
        }      
    }
}
------------------------------------------------------------------------------------------------------------
Sample output:
Data array:
 0.2000 0.5000 0.1000 0.1500 0.2000 0.1300 0.3000 0.2500 0.3000
 0.7000 0.2000 0.4500 0.1500 0.2000 0.8500 0.3000 0.6500 0.2000
 5 peaks found:
 0.5
 0.7
 0.45
 0.85
 0.65
![There are many approaches to locating peaks. Consider an array of data x[]. For this program, we define a peak as an element of the array that is a local maximu There are many approaches to locating peaks. Consider an array of data x[]. For this program, we define a peak as an element of the array that is a local maximu](/WebImages/2/there-are-many-approaches-to-locating-peaks-consider-an-arra-970238-1761495862-0.webp)
![There are many approaches to locating peaks. Consider an array of data x[]. For this program, we define a peak as an element of the array that is a local maximu There are many approaches to locating peaks. Consider an array of data x[]. For this program, we define a peak as an element of the array that is a local maximu](/WebImages/2/there-are-many-approaches-to-locating-peaks-consider-an-arra-970238-1761495862-1.webp)
