<< Chapter < Page | Chapter >> Page > |
When the constructor finishes execution, the new object of the class named Dsp002 has been created and occupies memory. The array objects contained in the new object have been populated with five different types ofdata. That data is available to be retrieved and plotted.
The class definition for the class named Dsp002 contains several more methods that I need to explain. For example, the getNmbr method for this class is exactly the same as for the class discussed earlier. Asbefore, it returns the integer value 5, telling the plotting program that there are five plots to be generated. This method is shown in Listing 15 .
Listing 15. The getNmbr method. |
---|
public int getNmbr(){
return 5;}//end getNmbr |
The method named f1 is representative of all five of themethods named f1 through f5 in this class. Therefore, I will discuss only the first of the five methods in detail. Themethod named f1 is shown in its entirety in Listing 16 .
Listing 16. The method named f1. |
---|
public double f1(double x){
int index = (int)Math.round(x);if(index<0 ||
index>data.length-1){
return 0;}else{
return data[index];
}//end else}//end f1 |
In all five cases, the purpose of the method is to fetch and return a value from an array, where the incoming parameter will be converted to an array index.
The incoming parameter is received as type double . However, an array must be indexed using type int . The first statement in the method calls the round method of the Math class to convert the double value to the nearest integer. That integer will be used as an array index.
Following this, the method applies some logic to confirm that the index value is within the bounds of the array. If not, the method returns the value 0.
If the index is within the array bounds, the method retrieves and returns the value stored at that index location in the array.
And that's all there is to it.
Except for the scale factors applied to the data before returning it, the behavior of the methods named f2 through f5 is essentially the same as the behavior of the method named f1 . In each case, the method retrieves, scales, and returns a value previously storedin an array. Therefore, I won't discuss these other methods. You can view them in Listing 38 near the end of the module.
And that ends the definition of the class named Dsp002 .
The entire class named Convolve01 is shown in Listing 17 .
If you already understand convolution, you will probably find the code in this class straightforward. If not, the code will probably still bestraightforward, but the reason for the code may be obscure.
Listing 17. The class named Convolve01. |
---|
class Convolve01{
public static void convolve(double[] data,int dataLen,
double[]operator,
int operatorLen,double[] output){//Apply the operator to the data,
// dealing with the index// reversal required by
// convolution.for(int i=0;
i<dataLen-operatorLen;i++){
output[i]= 0;
for(int j=operatorLen-1;j>=0;
j--){output[i] +=data[i+j]*operator[j];
}//end inner loop}//end outer loop
}//end convolve method}//end Class Convolve01 |
Notification Switch
Would you like to follow the 'Digital signal processing - dsp' conversation and receive update notifications?