<< Chapter < Page | Chapter >> Page > |
This program performs spectral analyses on five separate time series, each 400 samples in length.
Each time series contains a pulse and the pulses are different lengths. (The lengths of the individual pulses match that shown in Figure 1 .) Each pulse consists of a truncated sinusoid. The frequency of the sinusoid for each pulseis the same.
All frequency values are specified as type double as a fraction of the sampling frequency. The frequency of all five sinusoids is 0.0625 times thesampling frequency.
The lengths of the pulses are:
If this sounds familiar, it is because the pulses are identical to those displayed in Figure 1 and discussed under Dsp031a above.
The spectral analysis process uses a DFT algorithm and computes the amplitude of the spectral energy at 400 equally spaced frequencies between zero and thefolding frequency.
(Recall from the module titled Spectrum Analysis using Java, Sampling Frequency, Folding Frequency, and the FFT Algorithm that the folding frequency is one-half the sampling frequency.)
This program computes and displays the amplitude spectrum at frequency intervals that are one-half of the frequency intervals for a typical FFTalgorithm.
The results of the spectral analysis are multiplied by the reciprocal of the lengths of the individual pulses to normalize all five plots to the same peakvalue. Otherwise, the results for the short pulses would be too small to see on the plots.
Once again, this program is very similar to programs explained in the previous module titled Spectrum Analysis using Java, Sampling Frequency, Folding Frequency, and the FFT Algorithm . Therefore, this discussion will be very brief.
The code in Listing 3 declares and initializes some variables and creates the array objects that will contain the sinusoidal pulses.
In addition, the code in Listing 3 declares reference variables that will be used to refer to array objects containing results of the spectral analysisprocess that are not used in this program.
Finally, Listing 3 declares reference variables that will be used to refer to array objects containing the results plotted in Figure 2 and Figure 3 .
Given the names of the variables, the comments, and what you learned in the earlier modules, the code in Listing 3 should be self explanatory.
Listing 3. Beginning of the class named Dsp031. |
---|
class Dsp031 implements GraphIntfc01{
final double pi = Math.PI;int len = 400;//data length
//Sample that represents zero time.int zeroTime = 0;
//Low and high frequency limits for the// spectral analysis.
double lowF = 0.0;double highF = 0.5;
int numberSpectra = 5;//Frequency of the sinusoids
double freq = 0.0625;//Amplitude of the sinusoids
double amp = 160;//Following arrays will contain data that is
// input to the spectral analysis process.double[] data1 = new double[len];
double[]data2 = new double[len];double[] data3 = new double[len];
double[]data4 = new double[len];double[] data5 = new double[len];//Following arrays receive information back
// from the spectral analysis that is not used// in this program.
double[]real;
double[]imag;
double[]angle;//Following arrays receive the magnitude
// spectral information back from the spectral// analysis process.
double[]mag1;
double[]mag2;
double[]mag3;
double[]mag4;
double[]mag5; |
Notification Switch
Would you like to follow the 'Digital signal processing - dsp' conversation and receive update notifications?