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 &quot;all the rest&quot;, 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