<< Chapter < Page
  Digital signal processing - dsp     Page 13 / 19
Chapter >> Page >

The program performs spectral analysis on five separate time series, each 400 samples in length. Each time series contains a pulse and the pulses aredifferent lengths.

Each pulse consists of the sum of two sinusoids at closely spaced frequencies. The frequencies of the two sinusoids are equidistant from a centerfrequency of 0.0625 times the sampling frequency. The total separation between the frequencies of the two sinusoids is the reciprocal of the length of thepulse.

All frequency values are specified as type double as a fraction of the sampling frequency.

The lengths of the pulses are:

  • 25 samples
  • 50 samples
  • 100 samples
  • 200 samples
  • 400 samples

The spectral analysis

The spectral analysis computes the spectra at 400 equally spaced frequencies between zero and the folding frequency (one-half the sampling frequency) .

The results of the spectral analysis are multiplied by the reciprocal of the lengths of the individual pulses to normalize the five plots. Otherwise, theresults for the short pulses would be too small to see on the plots.

Because of the similarity of this program to the previous programs, my discussion of the code will be very brief.

Computation of the frequencies

The code in Listing 7 shows the computation of the frequencies of the sinusoids that will be added together to form each of the five pulses.

Listing 7. Computation of the frequencies.
//Frequencies of the sinusoidsdouble freq1a = 0.0625 - 8.0/len; double freq2a = 0.0625 + 8.0/len;double freq1b = 0.0625 - 4.0/len; double freq2b = 0.0625 + 4.0/len;double freq1c = 0.0625 - 2.0/len; double freq2c = 0.0625 + 2.0/len;double freq1d = 0.0625 - 1.0/len; double freq2d = 0.0625 + 1.0/len;double freq1e = 0.0625 - 0.5/len; double freq2e = 0.0625 + 0.5/len;

Create the pulses

The code in Listing 8 uses those frequency values to create the data for the pulses and to store that data in the arrays used to hold the pulses.

Listing 8. Create the pulses.
//Create the raw data for(int x = 0;x<len/16;x++){ data1[x]= amp*Math.cos(2*pi*x*freq1a) + amp*Math.cos(2*pi*x*freq2a);}//end for loop for(int x = 0;x<len/8;x++){ data2[x]= amp*Math.cos(2*pi*x*freq1b) + amp*Math.cos(2*pi*x*freq2b);}//end for loop for(int x = 0;x<len/4;x++){ data3[x]= amp*Math.cos(2*pi*x*freq1c) + amp*Math.cos(2*pi*x*freq2c);}//end for loop for(int x = 0;x<len/2;x++){ data4[x]= amp*Math.cos(2*pi*x*freq1d) + amp*Math.cos(2*pi*x*freq2d);}//end for loop for(int x = 0;x<len;x++){ data5[x]= amp*Math.cos(2*pi*x*freq1e) + amp*Math.cos(2*pi*x*freq2e);}//end for loop

Other than the code shown in Listing 7 and Listing 8 , the program named Dsp033 is the same as the programs that were previously explained, and I won'tdiscuss it further.

Run the programs

I encourage you to copy, compile, and run the programs provided in this module. Experiment with them, making changes and observing the results of yourchanges.

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