<< Chapter < Page
  Digital signal processing - dsp     Page 6 / 14
Chapter >> Page >

There are more efficient ways to write this method taking known symmetry and asymmetry conditions into account. However, I wrote the method the way that Idid because I wanted it to mimic the behavior of an FFT algorithm. Therefore, the complex input must extend from zero to the sampling frequency.

The method does not implement an FFT algorithm. Rather, the inverseTransform method implements a straight-forward sampled-data version of the continuous inverse Fourier transform that is defined usingintegral calculus.

Parameters for the inverseTransform method

The parameters to the inverseTransform method are:

  • double[] realIn - incoming real data
  • double[] imagIn - incoming image data
  • double[] realOut - outgoing real data

The method considers the data length to be realIn.length , and considers the computational time increment to be 1.0/realIn.length .

Assumptions

The method returns a number of points equal to the data length. It assumes that the real input consists of positive frequency points for a symmetric realfrequency function. That is, the real input is assumed to be symmetric about the folding frequency. The method does not test this assumption.

The method assumes that the imaginary input consists of positive frequency points for an asymmetric imaginary frequency function. That is, the imaginaryinput is assumed to be asymmetric about the folding frequency. Once again, the method does not test this assumption.

A real output

A symmetric real part and an asymmetric imaginary part guarantee that theimaginary output will be all zero values. Having made that assumption, the program makes no attempt to compute an imaginary output. If the assumptionsdescribed above are not valid, the results won't be valid.

The program was tested using JDK 1.8 under Windows 7.

Beginning of the inverseTransform method

The beginning of the class and the beginning of the static inverseTransform method is shown in Listing 5 .

Listing 5. Beginning of the class named InverseComplexToReal01.
public class InverseComplexToReal01{ public static void inverseTransform(double[] realIn,double[] imagIn,double[] realOut){int dataLen = realIn.length; double delT = 1.0/realIn.length;double startTime = 0.0;

Listing 5 declares and initializes some variables that will be used later.

The inverse transform computation

Listing 6 contains a pair of nested for loops that perform the actual inverse transform computation.

Listing 6. The inverse transform computation.
//Outer loop interates on time domain // values.for(int i=0; i<dataLen;i++){ double time = startTime + i*delT;double real = 0; //Inner loop iterates on frequency// domain values. for(int j=0; j<dataLen; j++){ real += realIn[j]* Math.cos(2*Math.PI*time*j)+ imagIn[j]*Math.sin(2*Math.PI*time*j); }//end inner looprealOut[i] = real;}//end outer loop }//end inverseTransform}//end class InverseComplexToReal01

If you have been studying the earlier modules in this series, you should be able to understand the code in Listing 6 without further explanation. Pay particular attention to the comments that describe the two for loops.

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Digital signal processing - dsp. OpenStax CNX. Jan 06, 2016 Download for free at https://legacy.cnx.org/content/col11642/1.38
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Digital signal processing - dsp' conversation and receive update notifications?

Ask