# Determining SINAD from measured data

I would like to determine the SINAD of a distorted signal from a measurement and have troubles to get consistent data. The problem is (at least to my understanding) that I only have a very limited number of signal periods and I'm not sure, whether I have enough data to provide this measurement at all.

In order to determine the SINAD I need the power of my signal as well as the power of "all the rest", i.e. the power of noise and distortion. To obtain these powers, I took my oscilloscope data and calculated the spectrum via an FFT. I didn't use any window function (i.e. I used a rectangular window) to calculate the FFT since I know the fundamental frequency I expect from my signal and can choose an integer multiple of the fundamental period as my window width. From the frequency bin at my desired frequency I determined the fundamental amplitude. The noise + distortion power was then calculated by subtracting the signal's RMS value from the total RMS value according to

From these two RMS values I then calculated the SINAD according to:

The problem is now that my results vary depending on the number of fundamental periods (I took between 1 and 33 periods, I don't have more) from the measurement I take to calculate the FFT, where increasing the number of fundamental periods degrades the SINAD. This makes sense to me to a certain extent since if I extend the window size of my input data, the frequency resolution of my spectrum increases. This means that parts of the noise + distortion in the vicinity of the fundamental bin which were combined into this bin for a course frequency resolution are now contained in the neighboring bins of the fundamental and treated as noise/distortion and not as part of the signal anymore.

I couldn't really find a lot on how to eliminate this issue. Googling on how to measure SINAD mostly leads to the definitions themselves. Is there a way to determine the SINAD for the limited amount of signal periods? How would I have to calculate it? I also tried the matlab function sinad(), however, it has similar issues (although with this function, the dependence on the number of signal periods is less compared to my own calculation).

Similar to the determination of the confidence intervals when estimating the population variance from a smaller sample, with a limited amount of data you will have a large variability in your estimates. There really is no way around reducing this error or variability other than taking more data (to the extent it is stationary).

For an optimized approach to measuring the SINAD, I suggest using correlation of your distorted signal with the reference waveform before any noise is added. I detail this approach further at these post:

How can I find SNR, PEAQ, and ODG values by comparing two audios?

Noise detection

OK. This is -- complicated.

I think that you may be missing an essential part of the signal to noise calculation, which is that you are comparing your intended signal to the amount of noise over the design bandwidth of your receiving apparatus.

This is because the whole SNR thing (of which SINAD is an elaboration) was conceived when communications were predominantly over voice channels (or, in the case of Morse code over a "CW" OOK channel, they were designed to be listened to and interpreted by human ears and brains).

So when you change the number of periods over which you collect your data, you're not only changing the factors that you mention, you're changing the bandwidth over which you're collecting.

I can't give you a nice tidy "you need $$N$$ cycles and $$M$$ samples" sort of thing, because I don't know it. But here's what I'd measure, and how I'd calculate what should work:

On the measurement and calculation side, you want to get a bunch of samples, you want to take the FFT. Then you want to estimate your signal from the bin at the signal frequency (and hope -- or verify -- that it's not, in itself, too noisy to be of value). Then you want bandlimit the rest of the spectrum to whatever the design bandwidth of your system is. If there's no design bandlimit -- stop, because unless the noise is insignificant, SINAD makes no sense.

On the analysis side, you need to figure out if you're collecting enough samples so that (A) the noise + valid distortion doesn't significantly alias back into your design bandwidth, and (B) you're collecting enough samples so that you can do a credible job of bandlimiting (i.e., you're capturing enough into the lower frequencies that things are sensible).

If you do this, and you find that there's more than one setup that'll give you decent answers, then as a check, after you properly bandlimit your measured signal, you should get roughly the same SINAD measurements.