<< Chapter < Page | Chapter >> Page > |
Finally, the code in Listing 5 creates the array objects that will receive the results of the spectral analysis, and calls the transform method of the ForwardRealToComplex01 class to perform the spectral analysis.
Listing 5. Perform the spectral analysis. |
---|
mag = new double[dataLen];real = new double[dataLen];imag = new double[dataLen];angle = new double[dataLen];ForwardRealToComplex01.transform(data,real,
imag,angle,mag,zeroTime,lowF,highF);}//end constructor |
Listing 5 also signals the end of the constructor. At this point, the object has been instantiated and it's array objects have been populated with the inputand output data from the spectral analysis process. This data is ready to be handed over to the plotting program to be plotted, as shown in Figure 2 .
The getParameters method, called in Listing 3 , reads parameter and pulse data from the file named Dsp034.txt , and deposits that data into the variables and the pulse array declared in Listing 2 .
The code in the getParameters method is straightforward, so I won't bore you with an explanation. You can view the method in Listing 6 near the end of the module.
As pointed out earlier, the Dsp034 class implements the GraphIntfc01 interface. As such, the class must define the six methods declared in that interface. These methods are called by the plottingprogram to obtain the data that is to be plotted.
You have seen implementations of these methods in several earlier modules, so there is nothing new here. Consequently, I won't discuss the interface methods.You can view the methods in Listing 6 near the end of the module.
The one thing that you might want to pay attention to in these methods is the scaling that is applied to the data before it is returned. This is an attempt tocause all of the curves to plot reasonably well within a value range of -180 to +180. This range is dictated by the fact that this is the range of values forthe phase angle data.
Now that you understand the inner workings of the program, let's look at some more examples, this time getting the input data from the file named Dsp034.txt .
The simplest pulse that you can create is a single non-zero valued sample among a bunch of zero-valued samples. This simple pulse, commonly called animpulse in digital signal processing, is an extremely important type of signal. It is used for a variety of purposes in testing both digital and analogsignal processing systems.
Let's examine the result of performing spectral analysis on an impulse.
The parameters used for this experiment are shown in Figure 4 .
Figure 4. The simplest pulse of all, an impulse. |
---|
Parameters read from file
Data length: 400Pulse length: 11
Sample for zero time: 0Lower frequency bound: 0.0
Upper frequency bound: 0.5Pulse Values
180.00.0
0.00.0
0.00.0
0.00.0
0.00.0
0.0 |
The data that you see in Figure 4 is the screen output from the method named getParameters . To orient you with this format, the second item in Figure 4 indicates that the entire length of the data upon which spectral analysis was performed was 400 samples. All 400 samples had a value of zeroexcept for the values of the sample in the pulse that occurred at the beginning. In this program, setting the total data length to 400 causes the spectralanalysis to be performed at 400 individual frequencies.
Notification Switch
Would you like to follow the 'Digital signal processing - dsp' conversation and receive update notifications?