I am using the Sound and Vibration toolbox to compute the SNR and SNDR (or SINAD if you prefer to call it that). However, I am seeing some suspicious behavior and wanted to know if anyone else has seen similiar things. The SNDR can at times be greater than the SNR! Not just by a little, but up to 3 dB... I can't think of a physical scenario where this could actually occur (maybe I'm wrong). Also, I should mention that this is an application where I have to limit the bandwidth due to significant out of band noise so the express VI's won't work for this application.
This issue is documented in CAR 231263. The fix has been implemented in the next version of the toolkit. In the mean time, attached is the fixed subVI. Please copy it over the old one at LabVIEW 2010\vi.lib\addons\Sound and Vibration\svt_Distortion\subVIs\sv_Harmonic Distortion and Noise.vi
Please, post if you have any difficulties.
Thanks for the quick reply. Can you comment on the nature of the fix? (or point me to where I can see CAR 231263.) I have quite a bit of data already collected and would like to determine if there is anyway I can fix it. (Probably not, but figured I would check.) Also, while I have you here, can you comment on a 64 bit version of the sound and vibration toolbox? We do a lot of very large data collection and processing and having to use the 32 bit version of LabVIEW in the past has been a major limitation for us.
the subVI attached to my last post computes energy quantities for various signal components including (fundamental, harmonics, noise, harmonics + noise, and total). That subVI also computes ratios for distortion measurements such as THD, THD+N, and SINAD. The ratio measurements were correct. The energy measurements were not correct for noise, harmonics+noise, and total as these were computed for the specified bandwidth by a sum of squares of the FFT bin magnitudes without compensating for the ENBW of the window applied before the FFT spectrum. Fundamental energy was correctly computed while noise energy was too high by the ENBW of the window (for Hanning, ENBW = 1.5); therefore, SNR returns a value lower than expected. Simulated test cases for automated testing have some harmonic distortion so THD always better than THD+N and SNR always better than THD+N, and automated tests also randomize input parameters including window and FFT size which led to tolerances set too wide to catch this bug. I feel shame.
You have a significant amount of historical data:
You can reprocess saved time-domain signals or complex spectra and the fixed subVI will lead to correctly computed SNR.
You can compensate past SNR results by the ENBW of the window.
Toolkit VIs are completely supported in LabVIEW 64-bit. The Sound and Vibration Express VIs are not supported in LabVIEW 64-bit.
With regards to acquisition and processing of large data: what is a typical requirement? Is it along the lines of doing an FFT of a one million-sample block, or more along the line of post processing thousands of 1k, 2k, ...; 64k blocks from a 4 GB file? or something else? Actually, would you mind creating a different forum post that we can use to discuss 'Big Data' issues?