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

(The real and complex parts of the frequency spectrum were computed at 256 frequencies between zero and the sampling frequency.)

There were 256 values plotted horizontally in each separate plot. Once again, to make it easier to view the plots on the rightmost end, I plotted the valueson a grid that is 270 units wide. This leaves some blank space on the rightmost end to contain the numbers, thus preventing the numbers from being mixed in withthe plotted values. The last actual data value coincides with the rightmost tick mark on each plot.

Perform an inverse fourier transform

After modifying the complex spectrum as described above, the program performs an inverse Fourier transform on the modified complex spectrum to produce thefiltered impulse.

The filtered impulse

The filtered impulse is shown as the bottom plot in Figure 4 . As you can see, the pulse is smeared out in time relative to the input pulse in the top plot.This is the typical result of reducing the bandwidth of a pulse.

(This particular modification of the complex spectrum resulted in a filtered pulse that has the waveform of a SIN(X)/X function. A differentmodification of the complex spectrum would have resulted in a filtered pulse with a different waveform.

This example also illustrates one of the miracles of digital signal processing. Energy appears in the output before it occurs in the input.Obviously that is not possible in the real world of analog systems, but many things are possible in the digital world that are not possible in the realworld.)

Beginning of the class for Dsp037

Listing 8 shows the beginning of the class definition for the program named Dsp037.

Listing 8. Beginning of the class for Dsp037.
class Dsp037 implements GraphIntfc01{ final double pi = Math.PI;int len = 256; double[]timeDataIn = new double[len];double[] realSpect = new double[len]; double[]imagSpect = new double[len];double[] angle = new double[len];//unused double[]magnitude = new double[len];double[] timeOut = new double[len];

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

Beginning of the constructor

The constructor begins in Listing 9 .

Listing 9. Beginning of the constructor.
public Dsp037(){//constructor timeDataIn[32]= 90;

Listing 9 creates the raw pulse data shown in the topmost plot in Figure 4 .

When the array object referred to by timeDataIn is created, the values of all array elements are set to zero by default. Listing 9 modifies one of the elements to have a value of 90. This results in a single impulse atan index of 32.

Compute the Fourier transform

Continuing with the constructor, the code in Listing 10 uses an FFT algorithm in the method named transform (discussed earlier) to compute the Fourier transform of the impulse.

Listing 10. Compute the Fourier transform.
//Compute FFT of the time data and save it in // the output arrays.ForwardRealToComplexFFT01.transform( timeDataIn,realSpect, imagSpect,angle, magnitude);

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