NASA engineers re-implemented the old code in MATLAB and used GPU computing with Parallel Computing Toolbox to reduce processing times.
Working in MATLAB, the engineers developed an algorithm to process the 16-bit integer data from the data acquisition system. The MATLAB algorithm converts the data to a pressure signal, breaks the signal into blocks, transforms the blocks into the frequency domain, corrects for instrumentation and filter effects, and averages across the blocks to construct a covariance matrix that provides estimates of the power common to each pair of microphones.
The algorithm incorporates Hamming, Kaiser, and flat-top window functions from Signal Processing Toolbox™, as well as fast Fourier transforms (FFTs) and matrix multiplication operations. It was first developed for standard CPU operation.
To verify the MATLAB implementation, the team compared the results it produced with the results produced by the legacy code, ensuring a match to within acceptable tolerances. They then updated the MATLAB code, using Parallel Computing Toolbox to transfer acoustic data to a K20 GPU and execute computationally intensive operations.
To simplify batch processing of recordings, the engineers created a graphical interface in MATLAB for specifying algorithm options and selecting recordings to process. They developed a second interface for generating plots of results, including narrowband spectra and one-third octave band spectra plots. These plots helped assess noise source behavior and data quality, and are used to develop advanced noise suppression models.
The team plans to develop additional advanced processing algorithms in MATLAB. These algorithms will enable them to more accurately pinpoint the source of noise during wind tunnel tests.