<< Chapter < Page | Chapter >> Page > |
That is all there is to it. For each frequency of interest, you can use this process to compute a complexnumber, Real(F)-jImag(F), which represents the complex energy corresponding to that frequency in the target time series.
Similarly, you can compute the sum of the squares of the real and imaginary parts and consider that to be a measure of the power at that frequency in thetime series. The square root of the power is the amplitude of the energy at that frequency.
Normally we are interested in more than one frequency, so we would repeat the above procedure once for each frequency of interest. This suggests the use ofnested for loops in the algorithm. The outer loop specifies the frequency of interest. The inner loop computes the sum of the products at a particularfrequency.
The static method named transform performs a real to complex Fourier transform. The method does not implement the FFT algorithm. Rather, itimplements a straightforward sampled data version of the continuous Fourier transform defined using integral calculus. (See ForwardRealToComplexFFT01 for an FFT algorithm.)
The method returns the following:
The method parameters are:
The computational frequency increment is the difference between the high and low limits divided by the length of the magnitude array.
The magnitude or amplitude is computed as the square root of the sum of the squares of the real and imaginary parts. This value is divided by the incomingdata length, which is given by data.length .
The method returns a number of points in the frequency domain equal to the incoming data length regardless of the high and low frequency limits.
The class and the transform method begin in Listing 14 . The code in Listing 14 is described above.
Listing 14. The beginning of the transform method. |
---|
public class ForwardRealToComplex01{
public static void transform(double[] data,double[] realOut,double[] imagOut,double[] angleOut,double[] magnitude,int zero,
double lowF,double highF){
double pi = Math.PI;//for convenienceint dataLen = data.length;
double delF = (highF-lowF)/data.length; |
Notification Switch
Would you like to follow the 'Digital signal processing - dsp' conversation and receive update notifications?