<< Chapter < Page | Chapter >> Page > |
Listing 2 presents the beginning of the class named Transform . Listing 2 also presents the beginning of an instance method of that class named doIt . The doIt method computes and returns the complex transform (via output parameters) of an incoming complex series.
Listing 2. The class named Transform. |
---|
class Transform{
void doIt(double[]realIn,
double[]imagIn,
double scale,double[] realOut,double[] imagOut){ |
The doIt method receives five incoming parameters. The first two parameters are references to two array objects of type double containing the real and imaginary parts of the input series.
The third parameter is a scale factor that is applied to the transform output in an attempt to keep the values in a range suitable for plotting if desired.
The last two parameters are references to array objects of type double . The results of performing the transform are used to populate these two arrays. This is the mechanism by which the object returns thetransform results to the calling program. It is assumed that all of the elements in these two array objects contain values of zero upon entry to the doIt method.
The body of the doIt method is presented in Listing 3 . The code in Listing 3 iterates on the input arrays, passing each complex sample contained in those two arrays to a method named correctAndRecombine .
Listing 3. Performing the transform. |
---|
for(int cnt = 0;cnt<realIn.length;cnt++){
correctAndRecombine(realIn[cnt],
imagIn[cnt],
cnt,realIn.length,
scale,realOut,
imagOut);}//end for loop
}//end doIt |
Each complex value in the incoming arrays represents both a complex sample and the transform of that complex sample under the assumption that the complexsample appears at the origin of the input series.
The method named correctAndRecombine corrects the transform result for each of the complex samples in the series so as to reflect the actualposition of the complex sample in the original input series.
Then the method named correctAndRecombine adds the corrected transform result into a pair of accumulators, one for the real part and one forthe imaginary part. This accomplishes the recombination of the corrected transforms of the input samples in order to produce the transform of the entireoriginal complex input series.
The correctAndRecombine method is shown in Listing 4 . Listing 4 also signals the end of the Transform class.
Listing 4. The correctAndRecombine method. |
---|
void correctAndRecombine(double realSample,
double imagSample,int position,
int length,double scale,
double[]realOut,
double[]imagOut){
//Calculate the complex transform values for// each sample in the complex output series.
for(int cnt = 0; cnt<length; cnt++){
double angle =(2.0*Math.PI*cnt/length)*position;
//Calculate output based on real inputrealOut[cnt] +=realSample*Math.cos(angle)/scale;
imagOut[cnt]+=
realSample*Math.sin(angle)/scale;//Calculate output based on imag input
realOut[cnt]-=
imagSample*Math.sin(angle)/scale;imagOut[cnt] +=imagSample*Math.cos(angle)/scale;
}//end for loop}//end correctAndRecombine
}//end class transform |
Notification Switch
Would you like to follow the 'Digital signal processing - dsp' conversation and receive update notifications?