Forums

how convert sampled scope data into dBV/sqrt(Hz)?

Started by all4dsp February 13, 2010
Hi Everyone, 

I've not been able to find this online, but I think it's a fundamental
question perhaps some of you have had to deal with in the past. If I have
an analog signal input (mostly white noise, but I suppose that's irrelevant
to this question) that I capture using a real-time sampling oscilloscope,
how do I process the data (received in Volts by the oscilloscope) to get
data in units of dBV/sqrt(Hz), where I use dBV here to mean "referenced to
1V rms" (e.g. 0dBV = 1Vrms)? 

Thanks in advance for any replies
On Feb 13, 6:56&#2013266080;pm, "all4dsp" <all4...@comcast.net> wrote:
> Hi Everyone, > > I've not been able to find this online, but I think it's a fundamental > question perhaps some of you have had to deal with in the past. If I have > an analog signal input (mostly white noise, but I suppose that's irrelevant > to this question) that I capture using a real-time sampling oscilloscope, > how do I process the data (received in Volts by the oscilloscope) to get > data in units of dBV/sqrt(Hz), where I use dBV here to mean "referenced to > 1V rms" (e.g. 0dBV = 1Vrms)? > > Thanks in advance for any replies
Take a look at: Bo0438.pdf Choose your Units! (PWR, PSD, ESD) www.bksv.com/doc/bo0438.pdf and Bv0031.pdf Technical review No. 3 - 1987 => p29 Signals and Units www.bksv.com/doc/Bv0031.pdf Does you instrument have a user's manual? Dale B. Dalrymple
Thanks Dale,

I should have mentioned, I need to do all of this post-processing in
Matlab, so even if the instrument shows me the plot in dBV/sqrt(Hz), I need
to understand how to do this manually given the raw time-sampled data list.
Not necessarily looking for a Matlab script, but more looking for the
process to go from time-sampled data to a dBV/sqrt(Hz). Something like: 

(1) Take the FFT of the data
(2) Get the Magnitude of the FFT
(3) Square the Magnitude; units are now V^2 
(4) Divide each Squared Magnitude data point by 2*ENBW (Effective Noise
Bandwidth); where ENBW = frequency resolution * ENBW multiplier for
selected weighting function...  (is this right????); units are now V^2/Hz 

(5) Take sqrt of data obtained from (4); units are now V/sqrt(Hz) ????
(6) Take 20*LOG_base10(data obtained in step 5); units are now dBV/sqrt(Hz)
????

Can someone correct me or fill in the details? (e.g. why divide by "2" in
step 4?)

Thanks in advance!
all4dsp wrote:
> Thanks Dale, > > I should have mentioned, I need to do all of this post-processing in > Matlab, so even if the instrument shows me the plot in dBV/sqrt(Hz), I need > to understand how to do this manually given the raw time-sampled data list. > Not necessarily looking for a Matlab script, but more looking for the > process to go from time-sampled data to a dBV/sqrt(Hz). Something like: > > (1) Take the FFT of the data > (2) Get the Magnitude of the FFT > (3) Square the Magnitude; units are now V^2 > (4) Divide each Squared Magnitude data point by 2*ENBW (Effective Noise > Bandwidth); where ENBW = frequency resolution * ENBW multiplier for > selected weighting function... (is this right????); units are now V^2/Hz > > (5) Take sqrt of data obtained from (4); units are now V/sqrt(Hz) ???? > (6) Take 20*LOG_base10(data obtained in step 5); units are now dBV/sqrt(Hz) > ???? > > Can someone correct me or fill in the details? (e.g. why divide by "2" in > step 4?) > > Thanks in advance!
> (1) Take the FFT of the data OK - no window? Here's a reference: http://alpha.science.unitn.it/~bassi/Signal/NInotes/an041.pdf > (2) Get the Magnitude of the FFT OK. > (3) Square the Magnitude; units are now V^2 OK - so now the magnitude of volts measure is converted into a power measure and, as below, you understand there's a conversion factor of sample units to volts somewhere. If this is going to end up dbV then you have to know what number represents a "V". :-) > (4) Divide each Squared Magnitude data point by 2*ENBW (Effective Noise > Bandwidth); where ENBW = frequency resolution * ENBW multiplier for > selected weighting function... (is this right????); units are now V^2/Hz *What* "weighting function"? Presumably the factor of 2 takes into account the negative frequency components, eh? (i.e. the samples for f>fs/2) If so, I'd multiply rather than divide by 2 and this would be off by a factor of 4? So, I guess I don't understand this factor of 2 you're using. > > (5) Take sqrt of data obtained from (4); units are now V/sqrt(Hz) ???? That sounds reasonable. > (6) Take 20*LOG_base10(data obtained in step 5); units are now dBV/sqrt(Hz) As long as the reference to 1v is maintained then that sounds OK. Maybe that's the "weighting function"? I'm happy to comment but I've not done this quite this way before... Fred
On Sun, 14 Feb 2010 11:12:51 -0600, all4dsp wrote:

> Thanks Dale, > > I should have mentioned, I need to do all of this post-processing in > Matlab, so even if the instrument shows me the plot in dBV/sqrt(Hz), I > need to understand how to do this manually given the raw time-sampled > data list. Not necessarily looking for a Matlab script, but more looking > for the process to go from time-sampled data to a dBV/sqrt(Hz). > Something like: > > (1) Take the FFT of the data > (2) Get the Magnitude of the FFT > (3) Square the Magnitude; units are now V^2 (4) Divide each Squared > Magnitude data point by 2*ENBW (Effective Noise Bandwidth); where ENBW = > frequency resolution * ENBW multiplier for selected weighting > function... (is this right????); units are now V^2/Hz > > (5) Take sqrt of data obtained from (4); units are now V/sqrt(Hz) ???? > (6) Take 20*LOG_base10(data obtained in step 5); units are now > dBV/sqrt(Hz) ???? > > Can someone correct me or fill in the details? (e.g. why divide by "2" > in step 4?) > > Thanks in advance!
This is a USENET newsgroup, it'd be nice if you'd quote prior messages. Time to ask what you're doing. If you know the noise bandwidth of the signal you're measuring, then you can just calculate the RMS signal strength on the scope and divide it by the square root of the noise bandwidth. If you _don't_ know the noise bandwidth of the signal, then you'll have to do the FFT thing, essentially to _find_ that noise bandwidth. If you _really_ don't know the noise bandwidth, to the point where the signal may have significant energy above the Nyquist frequency of the sampling rate of the scope, then you need to change your measuring instrument so that you're getting enough information. -- www.wescottdesign.com
On Sun, 14 Feb 2010 11:12:51 -0600, all4dsp wrote:

> Thanks Dale, > > I should have mentioned, I need to do all of this post-processing in > Matlab, so even if the instrument shows me the plot in dBV/sqrt(Hz), I > need to understand how to do this manually given the raw time-sampled > data list. Not necessarily looking for a Matlab script, but more looking > for the process to go from time-sampled data to a dBV/sqrt(Hz). > Something like: > > (1) Take the FFT of the data > (2) Get the Magnitude of the FFT > (3) Square the Magnitude; units are now V^2 (4) Divide each Squared > Magnitude data point by 2*ENBW (Effective Noise Bandwidth); where ENBW = > frequency resolution * ENBW multiplier for selected weighting > function... (is this right????); units are now V^2/Hz > > (5) Take sqrt of data obtained from (4); units are now V/sqrt(Hz) ???? > (6) Take 20*LOG_base10(data obtained in step 5); units are now > dBV/sqrt(Hz) ???? > > Can someone correct me or fill in the details? (e.g. why divide by "2" > in step 4?) > > Thanks in advance!
This is a USENET newsgroup, it'd be nice if you'd quote prior messages. Time to ask what you're doing. If you know the noise bandwidth of the signal you're measuring, then you can just calculate the RMS signal strength on the scope and divide it by the square root of the noise bandwidth. If you _don't_ know the noise bandwidth of the signal, then you'll have to do the FFT thing, essentially to _find_ that noise bandwidth. If you _really_ don't know the noise bandwidth, to the point where the signal may have significant energy above the Nyquist frequency of the sampling rate of the scope, then you need to change your measuring instrument so that you're getting enough information. -- www.wescottdesign.com
On Sat, 13 Feb 2010 20:56:19 -0600, all4dsp wrote:

> Hi Everyone, > > I've not been able to find this online, but I think it's a fundamental > question perhaps some of you have had to deal with in the past. If I > have an analog signal input (mostly white noise, but I suppose that's > irrelevant to this question) that I capture using a real-time sampling > oscilloscope, how do I process the data (received in Volts by the > oscilloscope) to get data in units of dBV/sqrt(Hz), where I use dBV here > to mean "referenced to 1V rms" (e.g. 0dBV = 1Vrms)? > > Thanks in advance for any replies
Just a nit -- the noise power that passes through a filter depends on the power spectral density at its input (in watts/hz), and the noise bandwidth of the filter. But the power spectral density is in _watts_/ hz, not dB/Hz -- the decibel is based on logarithms of ratios, and the decibel measure of power does not increase linearly with filter bandwidth, where a linear measure of power (for white noise in) does. -- www.wescottdesign.com