<< Chapter < Page | Chapter >> Page > |
The code begins by testing to see if both the real and imaginary parts are equal to zero. If so, attempting to form the ratio of the imaginary part to thereal part would be meaningless. In this case, the code in Listing 1 simply sets the phase angle to a value of zero.
If both the real and imaginary parts are not zero, then the ratio of the imaginary value to the real value is formed and passed as a parameter to the atan method of the Math class.
The atan method returns the angle in radians whose tangent matches the value received as a parameter. The angle that is returned is in therange from -pi/2 to +pi/2 (-90 degrees to +90 degrees) . The code in Listing 1 multiplies that angle in radians by 180.0/pi to convert the angle from radians to degrees.
Although we have an intermediate answer at this point, we're still not finished. There is more work to do. The atan method simply uses the sign of its incoming parameter to decide whether to report the angle aspositive or negative, and it only covers angles in two quadrants (-90 degrees to + 90 degrees) . We know that the angle can actually be in any one of four quadrants (-180 degrees to +180 degrees) .
For example, a positive ratio can result from a positive imaginary value and a positive real value, or from a negative imaginary value and a negative realvalue. Both of these would be reported by the atan method as being between 0 and 90 degrees when in fact, the negative imaginary value andthe negative real value means that the angle is actually between -90 degrees and -180 degrees.
Similarly, a negative ratio can result from a negative imaginary value and a positive real value or from a positive imaginary value and a negative realvalue. Both of these would be reported by the atan method as being between 0 and -90 degrees when in fact, the positive imaginary value andthe negative real value means that the angle is actually between 90 degrees and 180 degrees.
I will leave it as an exercise for the reader to work through the remaining code in Listing 1 to see how this code determines the proper quadrant and adjusts the angle appropriately, all the while maintaining the angle between-180 degrees and +180 degrees.
I will discuss the program named Dsp034 in fragments. A complete listing of the program is provided in Listing 6 near the end of the module.
Due to the similarity of this program to programs explained in previous modules in this series, this discussion will be rather brief. Following adiscussion of the code, I will provide and explain some more spectral analysis results obtained by running the program with parameters read from the file named Dsp034.txt .
The beginning of the class, along with the declaration of several variables is shown in Listing 2 .
(Note that the class implements the interface named GraphIntfc01.)
Notification Switch
Would you like to follow the 'Digital signal processing - dsp' conversation and receive update notifications?