<< Chapter < Page | Chapter >> Page > |
The results of the Fourier transform are stored in the array objects referred to by realSpect , imagSpect , and magnitude .
(The phase angle is also computed but is of no interest in this example.)
Listing 11 applies the filter by setting sample values in a portion of the real and imaginary parts of the complex spectrum to zero.
Listing 11. Apply the filter to the frequency data. |
---|
for(int cnt = len/6;cnt<5*len/6;cnt++){
realSpect[cnt]= 0.0;
imagSpect[cnt]= 0.0;
}//end for loop |
This code eliminates all energy between one-sixth and five-sixths of the sampling frequency. The modified data for the real and imaginary parts of thecomplex spectrum are shown in the second and third plots in Figure 4 .
Listing 12 re-computes the magnitude values for the modified real and imaginary values of the complex spectrum.
Listing 12. Re-compute the magnitude. |
---|
//Recompute the magnitude based on the
// modified real and imaginary spectra.for(int cnt = 0;cnt<len;cnt++){
magnitude[cnt]=
(Math.sqrt(realSpect[cnt]*realSpect[cnt]+ imagSpect[cnt]*imagSpect[cnt])/len);
}//end for loop |
The modified data for the amplitude of the complex spectrum are shown in the fourth plot in Figure 4 .
Listing 13 uses the inverseTransform method to compute the inverse Fourier transform of the modified complex spectrum stored in realSpect and imagSpect.The results of the inverse transform are stored in timeOut.
Listing 13. Compute the inverse Fourier transform. |
---|
InverseComplexToRealFFT01.inverseTransform(
realSpect,imagSpect,
timeOut);}//end constructor |
The results of the inverse transform are shown in the bottom plot in Figure 4 .
Listing 13 also signals the end of the constructor.
Once the constructor returns, all of the data that is to be plotted has been stored in the various array objects. The remaining code in the program consistsof the definition of the six methods required by the interface named GraphIntfc01. These methods are required to make it possible to use the programnamed Graph03 to plot the results as shown in Figure 4 .
I have discussed these methods on numerous previous occasions, and won't repeat that discussion here.
Figure 5 illustrates one more example of performing frequency filtering by modifying the complex spectrum and then performing an inverse transform on themodified spectrum.
While discussing the program named Dsp037 , I told you that performing a different modification on the complex spectrum would result in a differentwaveform for the filtered impulse. The program named Dsp038 applies a different modification to the complex spectrum, but is otherwise the same as Dsp037.
(Because of the similarity of the two programs, I won't discuss the code in Dsp038. You can view that code in Listing 19 near the end of the module.)
Figure 5 shows the output produced by the program named Dsp038 .
Notification Switch
Would you like to follow the 'Digital signal processing - dsp' conversation and receive update notifications?