Yes, it returns dBc for relative values, such as THD and SNR.
But these functions also returning values in absolute RMS dB units (noise floor and harmonic level), for example:
[snr_db, noisePow] = snr(y, Fs, 10);
[thd_db, harmpow, harmfreq] = thd(y, Fs, 10);
I'm talking about noisePow and harmpow values, which is returned in absolute RMS dB units.
And I think this question is not MATLAB related, but measurement related.
Is it correct to measure noise floor level in dBFS units where full scale is max amplitude for specific ADC resolution?
If that is correct then the following question - is it correct to convert RMS dB units to dBFS units by adding 10*log10(4)/2 for the case when signal amplitude is limited with -1...+1 range?
I'm not sure, because for DC signal with max amplitude, 0 Hz harmonic level will be +6.02 dBFS. And if I will use DC signal with max amplitude as a full scale for dBFS units, then absolute noise floor level will be shifted for 6.02 dB.
In short, if we take sine wave within full scale range (-1...+1), then what is correct 1'st harmonic level for that sine in dBFS units?
1) 0 dBFS
2) -6.02 dBFS
3) -3.01 dBFS
4) +3.01 dBFS
Which one is correct?
Previously I thought that 0 dBFS in that case is correct. But now I'm not sure...