Calculating SNR of an acoustic signal

Started by stojakapimp February 14, 2007
I'm wondering what a good method is to calculate the SNR of a signal.  For
example, I'm emitting a 60-130 kHz 50 ms chirp in a tank full of water and
recording the sound waves with different hydrophones.  I'm curious to see
how changing the chirp length affects the SNR, but I'm not real clear on
how to exactly calculate the SNR.

I know that SNR is the ratio of signal to noise power levels, so does that
mean that in my received signal I can plot the power density spectrum and
then subtract the average low power by the peak power?  To be more
precise, I'm using the pwelch command in Matlab to plot the power density
spectrum for the received signal which has units of dB/frequency, but
wasn't sure on if I can do that to calculate SNR.

Thanks!


On 14 Feb, 21:50, "stojakapimp" <jrenf...@gmail.com> wrote:
> I'm wondering what a good method is to calculate the SNR of a signal. For > example, I'm emitting a 60-130 kHz 50 ms chirp in a tank full of water and > recording the sound waves with different hydrophones. I'm curious to see > how changing the chirp length affects the SNR, but I'm not real clear on > how to exactly calculate the SNR.
Changing the chirp length does NOT change the SNR, assuming that the chirp length is the only system parameter you change.
> I know that SNR is the ratio of signal to noise power levels, so does that > mean that in my received signal I can plot the power density spectrum and > then subtract the average low power by the peak power? To be more > precise, I'm using the pwelch command in Matlab to plot the power density > spectrum for the received signal which has units of dB/frequency, but > wasn't sure on if I can do that to calculate SNR.
Estimating the SNR is not necessarily easy. If you can, measure the PSD of the background noise. Then, if signal parameters permit, measure the PSD of the signal and noise together. From that, comute the SNR. This poses two problems. The first is to measure the background noise. Most active sonar systems sync the receiver with the transmitter, making it all but impossible to make a measurement without sending a pulse. The second is that most sonar pulses are transients, not stationary, meaning that it is very difficult to make the *power* of the signal. Rune
Well there are two parameters that I set...the chirp length of the signal,
and the amount of time that I want to record.  So if my chirp length is
50ms, then I usually record for about 100ms in order to obtain the chirp +
its reverberation.  So you're saying that increasing the chirp length will
not increase the SNR?

Also, for these measurements, I am emitting with one transducer and
receiving with 3 hydrophones.  So yes, I can record sound in the tank
without having to emit a signal.  Are you recommending that I make
measurements in the tank without producing a sound in order to obtain the
noise signal levels?  Then make measurement with a ping and then compare
that to the noise levels?

Thanks!

>On 14 Feb, 21:50, "stojakapimp" <jrenf...@gmail.com> wrote: >> I'm wondering what a good method is to calculate the SNR of a signal.
For
>> example, I'm emitting a 60-130 kHz 50 ms chirp in a tank full of water
and
>> recording the sound waves with different hydrophones. I'm curious to
see
>> how changing the chirp length affects the SNR, but I'm not real clear
on
>> how to exactly calculate the SNR. > >Changing the chirp length does NOT change the SNR, assuming that >the chirp length is the only system parameter you change. > >> I know that SNR is the ratio of signal to noise power levels, so does
that
>> mean that in my received signal I can plot the power density spectrum
and
>> then subtract the average low power by the peak power? To be more >> precise, I'm using the pwelch command in Matlab to plot the power
density
>> spectrum for the received signal which has units of dB/frequency, but >> wasn't sure on if I can do that to calculate SNR. > >Estimating the SNR is not necessarily easy. If you can, measure the >PSD >of the background noise. Then, if signal parameters permit, measure >the >PSD of the signal and noise together. From that, comute the SNR. > >This poses two problems. The first is to measure the background >noise. >Most active sonar systems sync the receiver with the transmitter, >making >it all but impossible to make a measurement without sending a pulse. >The second is that most sonar pulses are transients, not stationary, >meaning that it is very difficult to make the *power* of the signal. > >Rune > >
"stojakapimp" <jrenfree@gmail.com> wrote in message 
news:7cqdneSAPObfD07YnZ2dnUVZ_rWnnZ2d@giganews.com...
> Well there are two parameters that I set...the chirp length of the signal, > and the amount of time that I want to record. So if my chirp length is > 50ms, then I usually record for about 100ms in order to obtain the chirp + > its reverberation. So you're saying that increasing the chirp length will > not increase the SNR? > > Also, for these measurements, I am emitting with one transducer and > receiving with 3 hydrophones. So yes, I can record sound in the tank > without having to emit a signal. Are you recommending that I make > measurements in the tank without producing a sound in order to obtain the > noise signal levels? Then make measurement with a ping and then compare > that to the noise levels? > > Thanks!
It's a lot more complicated than that because active sonar has more than one "noise" to deal with and you have to be particular about what you're talking about and when. Sometimes, usually long after the transmit pulse, the receiver noise floor will be the ambient noise - whatever that is.... affected by flow noise if there's platform motion or strong current and, best case, limited by the receiver electronics. The rest of the time the receiver noise floor will be due to reverberation. Then, you need to consider *where* in the receiver you want to measure SNR. You might measure it in a broadband sense over the entire receiver passband - and get the worst possible SNR. Or, you might measure it at the output of a matched filter or bank of filters, or ...... A simple example is a tone pulse of bandwidth "W" and measuring SNR with bandwidth W, 2W, 4W, etc. as the reciever or filter bandwidth gets wider, the SNR gets 3dB worse for white noise. Since you're using a chirp then I assume there's a matched filter. So, that helps decide part of the answer above. The tank has to be large compared to the extent of the pulse in water and you'll probably have to do something to observe the signal *before* boundary reverberation messes everything up at the receiver. This is common practice .... One approach might be to ping away with no object of interest present and characterize the "noise" coming out of the receiver as a function of time. Then, introduce an object of interest and compare its signal level to the noise you've characterized at the same range - assuming there is enough SNR for detection and measurement! Another similar but real time approach might be to measure the "noise" at times just before and just after the echo in order to make the comparison. A simple plot of signal plus noise with time at the receiver output will usually allow this to be done. So, your 100msec record needs to be around the echo time *and* the echoing object of interest has to be of very limited physical extent in range. Otherwise the echo may be longer than 100msec. A sphere that's not *too* big relative to the wavelength would be good. You could look up radar cross section of a sphere vs. size and wavelength to find the point where cross section levels off (or sonar target size ... same idea). Fred
On 14 Feb, 23:50, "stojakapimp" <jrenf...@gmail.com> wrote:
> Well there are two parameters that I set...the chirp length of the signal, > and the amount of time that I want to record. So if my chirp length is > 50ms, then I usually record for about 100ms in order to obtain the chirp + > its reverberation. So you're saying that increasing the chirp length will > not increase the SNR?
Keeping the power constant, increasing transmit time will increase the energy of the signal. SNR is expressed in terms of power.
> Also, for these measurements, I am emitting with one transducer and > receiving with 3 hydrophones. So yes, I can record sound in the tank > without having to emit a signal. Are you recommending that I make > measurements in the tank without producing a sound in order to obtain the > noise signal levels? Then make measurement with a ping and then compare > that to the noise levels?
Yes. As Fred said, pay attention to propagation paths. 50 ms pings correspond to some 75 m of propagation. Quite a bit larger than your tank, right? I would be surprised if you measure a very big difference when setting 100ms chirp lengths; you are probably only measuring reverberation inside the tank anyway. Rune
The SNR is the ratio of signal energy to noise power for matched filters.  
This means that when you double the leagth of the pulse, you double the energy 
and increase the SNR by 3 dB.

Rune is right.  You cannot do what you want to do in that tank unless you 
shorten the pulses to a few (two or three) millisecopnds in length.

In article <1171699699.544626.24480@p10g2000cwp.googlegroups.com>, "Rune 
Allnor" <allnor@tele.ntnu.no> wrote:
>On 14 Feb, 23:50, "stojakapimp" <jrenf...@gmail.com> wrote: >> Well there are two parameters that I set...the chirp length of the signal, >> and the amount of time that I want to record. So if my chirp length is >> 50ms, then I usually record for about 100ms in order to obtain the chirp + >> its reverberation. So you're saying that increasing the chirp length will >> not increase the SNR? > >Keeping the power constant, increasing transmit time will increase >the energy of the signal. SNR is expressed in terms of power. > >> Also, for these measurements, I am emitting with one transducer and >> receiving with 3 hydrophones. So yes, I can record sound in the tank >> without having to emit a signal. Are you recommending that I make >> measurements in the tank without producing a sound in order to obtain the >> noise signal levels? Then make measurement with a ping and then compare >> that to the noise levels? > >Yes. > >As Fred said, pay attention to propagation paths. 50 ms pings >correspond >to some 75 m of propagation. Quite a bit larger than your tank, right? >I would >be surprised if you measure a very big difference when setting 100ms >chirp >lengths; you are probably only measuring reverberation inside the >tank >anyway. > >Rune >
John Herman wrote:
> The SNR is the ratio of signal energy to noise power for matched filters. > This means that when you double the leagth of the pulse, you double the energy > and increase the SNR by 3 dB.
... I'm puzzled here. How can a ratio of energy to power be dimensionless? Jerry -- Engineering is the art of making what you want from things you can get. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
On 19 Mar, 02:28, Jerry Avins <j...@ieee.org> wrote:
> John Herman wrote: > > The SNR is the ratio of signal energy to noise power for matched filters. > > This means that when you double the leagth of the pulse, you double the energy > > and increase the SNR by 3 dB. > > ... > > I'm puzzled here. How can a ratio of energy to power be dimensionless?
It can't. But then, SNR is a measure of power ratios, which makes little sense for transient signals. The way I understand it, SNR for transients is computed as some RMS power value averaged over some "typical" time frame of the transient. For a transient with constant amplitude, then, the SNR can be computed from the peak power, the SNR being valid "for as long as the pulse lasts". Since the matched filter works with energy, pulse duration influences the processing gain of the matched filter. Rune
On 19 Mar, 02:28, Jerry Avins <j...@ieee.org> wrote:
> John Herman wrote: > > The SNR is the ratio of signal energy to noise power for matched filters. > > This means that when you double the leagth of the pulse, you double the energy > > and increase the SNR by 3 dB. > > ... > > I'm puzzled here. How can a ratio of energy to power be dimensionless?
It can't. But then, SNR is a measure of power ratios, which makes little sense for transient signals. The way I understand it, SNR for transients is computed as some RMS power value averaged over some "typical" time frame of the transient. For a transient with constant amplitude, then, the SNR can be computed from the peak power, the SNR being valid "for as long as the pulse lasts". Since the matched filter works with energy, pulse duration influences the processing gain of the matched filter. Rune
John Herman wrote:
> The SNR is the ratio of signal energy to noise power for matched filters. > This means that when you double the leagth of the pulse, you double the energy > and increase the SNR by 3 dB.
... I'm puzzled here. How can a ratio of energy to power be dimensionless? Jerry -- Engineering is the art of making what you want from things you can get. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
The SNR is the ratio of signal energy to noise power for matched filters.  
This means that when you double the leagth of the pulse, you double the energy 
and increase the SNR by 3 dB.

Rune is right.  You cannot do what you want to do in that tank unless you 
shorten the pulses to a few (two or three) millisecopnds in length.

In article <1171699699.544626.24480@p10g2000cwp.googlegroups.com>, "Rune 
Allnor" <allnor@tele.ntnu.no> wrote:
>On 14 Feb, 23:50, "stojakapimp" <jrenf...@gmail.com> wrote: >> Well there are two parameters that I set...the chirp length of the signal, >> and the amount of time that I want to record. So if my chirp length is >> 50ms, then I usually record for about 100ms in order to obtain the chirp + >> its reverberation. So you're saying that increasing the chirp length will >> not increase the SNR? > >Keeping the power constant, increasing transmit time will increase >the energy of the signal. SNR is expressed in terms of power. > >> Also, for these measurements, I am emitting with one transducer and >> receiving with 3 hydrophones. So yes, I can record sound in the tank >> without having to emit a signal. Are you recommending that I make >> measurements in the tank without producing a sound in order to obtain the >> noise signal levels? Then make measurement with a ping and then compare >> that to the noise levels? > >Yes. > >As Fred said, pay attention to propagation paths. 50 ms pings >correspond >to some 75 m of propagation. Quite a bit larger than your tank, right? >I would >be surprised if you measure a very big difference when setting 100ms >chirp >lengths; you are probably only measuring reverberation inside the >tank >anyway. > >Rune >
On 14 Feb, 23:50, "stojakapimp" <jrenf...@gmail.com> wrote:
> Well there are two parameters that I set...the chirp length of the signal, > and the amount of time that I want to record. So if my chirp length is > 50ms, then I usually record for about 100ms in order to obtain the chirp + > its reverberation. So you're saying that increasing the chirp length will > not increase the SNR?
Keeping the power constant, increasing transmit time will increase the energy of the signal. SNR is expressed in terms of power.
> Also, for these measurements, I am emitting with one transducer and > receiving with 3 hydrophones. So yes, I can record sound in the tank > without having to emit a signal. Are you recommending that I make > measurements in the tank without producing a sound in order to obtain the > noise signal levels? Then make measurement with a ping and then compare > that to the noise levels?
Yes. As Fred said, pay attention to propagation paths. 50 ms pings correspond to some 75 m of propagation. Quite a bit larger than your tank, right? I would be surprised if you measure a very big difference when setting 100ms chirp lengths; you are probably only measuring reverberation inside the tank anyway. Rune
"stojakapimp" <jrenfree@gmail.com> wrote in message 
news:7cqdneSAPObfD07YnZ2dnUVZ_rWnnZ2d@giganews.com...
> Well there are two parameters that I set...the chirp length of the signal, > and the amount of time that I want to record. So if my chirp length is > 50ms, then I usually record for about 100ms in order to obtain the chirp + > its reverberation. So you're saying that increasing the chirp length will > not increase the SNR? > > Also, for these measurements, I am emitting with one transducer and > receiving with 3 hydrophones. So yes, I can record sound in the tank > without having to emit a signal. Are you recommending that I make > measurements in the tank without producing a sound in order to obtain the > noise signal levels? Then make measurement with a ping and then compare > that to the noise levels? > > Thanks!
It's a lot more complicated than that because active sonar has more than one "noise" to deal with and you have to be particular about what you're talking about and when. Sometimes, usually long after the transmit pulse, the receiver noise floor will be the ambient noise - whatever that is.... affected by flow noise if there's platform motion or strong current and, best case, limited by the receiver electronics. The rest of the time the receiver noise floor will be due to reverberation. Then, you need to consider *where* in the receiver you want to measure SNR. You might measure it in a broadband sense over the entire receiver passband - and get the worst possible SNR. Or, you might measure it at the output of a matched filter or bank of filters, or ...... A simple example is a tone pulse of bandwidth "W" and measuring SNR with bandwidth W, 2W, 4W, etc. as the reciever or filter bandwidth gets wider, the SNR gets 3dB worse for white noise. Since you're using a chirp then I assume there's a matched filter. So, that helps decide part of the answer above. The tank has to be large compared to the extent of the pulse in water and you'll probably have to do something to observe the signal *before* boundary reverberation messes everything up at the receiver. This is common practice .... One approach might be to ping away with no object of interest present and characterize the "noise" coming out of the receiver as a function of time. Then, introduce an object of interest and compare its signal level to the noise you've characterized at the same range - assuming there is enough SNR for detection and measurement! Another similar but real time approach might be to measure the "noise" at times just before and just after the echo in order to make the comparison. A simple plot of signal plus noise with time at the receiver output will usually allow this to be done. So, your 100msec record needs to be around the echo time *and* the echoing object of interest has to be of very limited physical extent in range. Otherwise the echo may be longer than 100msec. A sphere that's not *too* big relative to the wavelength would be good. You could look up radar cross section of a sphere vs. size and wavelength to find the point where cross section levels off (or sonar target size ... same idea). Fred
Well there are two parameters that I set...the chirp length of the signal,
and the amount of time that I want to record.  So if my chirp length is
50ms, then I usually record for about 100ms in order to obtain the chirp +
its reverberation.  So you're saying that increasing the chirp length will
not increase the SNR?

Also, for these measurements, I am emitting with one transducer and
receiving with 3 hydrophones.  So yes, I can record sound in the tank
without having to emit a signal.  Are you recommending that I make
measurements in the tank without producing a sound in order to obtain the
noise signal levels?  Then make measurement with a ping and then compare
that to the noise levels?

Thanks!

>On 14 Feb, 21:50, "stojakapimp" <jrenf...@gmail.com> wrote: >> I'm wondering what a good method is to calculate the SNR of a signal.
For
>> example, I'm emitting a 60-130 kHz 50 ms chirp in a tank full of water
and
>> recording the sound waves with different hydrophones. I'm curious to
see
>> how changing the chirp length affects the SNR, but I'm not real clear
on
>> how to exactly calculate the SNR. > >Changing the chirp length does NOT change the SNR, assuming that >the chirp length is the only system parameter you change. > >> I know that SNR is the ratio of signal to noise power levels, so does
that
>> mean that in my received signal I can plot the power density spectrum
and
>> then subtract the average low power by the peak power? To be more >> precise, I'm using the pwelch command in Matlab to plot the power
density
>> spectrum for the received signal which has units of dB/frequency, but >> wasn't sure on if I can do that to calculate SNR. > >Estimating the SNR is not necessarily easy. If you can, measure the >PSD >of the background noise. Then, if signal parameters permit, measure >the >PSD of the signal and noise together. From that, comute the SNR. > >This poses two problems. The first is to measure the background >noise. >Most active sonar systems sync the receiver with the transmitter, >making >it all but impossible to make a measurement without sending a pulse. >The second is that most sonar pulses are transients, not stationary, >meaning that it is very difficult to make the *power* of the signal. > >Rune > >
On 14 Feb, 21:50, "stojakapimp" <jrenf...@gmail.com> wrote:
> I'm wondering what a good method is to calculate the SNR of a signal. For > example, I'm emitting a 60-130 kHz 50 ms chirp in a tank full of water and > recording the sound waves with different hydrophones. I'm curious to see > how changing the chirp length affects the SNR, but I'm not real clear on > how to exactly calculate the SNR.
Changing the chirp length does NOT change the SNR, assuming that the chirp length is the only system parameter you change.
> I know that SNR is the ratio of signal to noise power levels, so does that > mean that in my received signal I can plot the power density spectrum and > then subtract the average low power by the peak power? To be more > precise, I'm using the pwelch command in Matlab to plot the power density > spectrum for the received signal which has units of dB/frequency, but > wasn't sure on if I can do that to calculate SNR.
Estimating the SNR is not necessarily easy. If you can, measure the PSD of the background noise. Then, if signal parameters permit, measure the PSD of the signal and noise together. From that, comute the SNR. This poses two problems. The first is to measure the background noise. Most active sonar systems sync the receiver with the transmitter, making it all but impossible to make a measurement without sending a pulse. The second is that most sonar pulses are transients, not stationary, meaning that it is very difficult to make the *power* of the signal. Rune
I'm wondering what a good method is to calculate the SNR of a signal.  For
example, I'm emitting a 60-130 kHz 50 ms chirp in a tank full of water and
recording the sound waves with different hydrophones.  I'm curious to see
how changing the chirp length affects the SNR, but I'm not real clear on
how to exactly calculate the SNR.

I know that SNR is the ratio of signal to noise power levels, so does that
mean that in my received signal I can plot the power density spectrum and
then subtract the average low power by the peak power?  To be more
precise, I'm using the pwelch command in Matlab to plot the power density
spectrum for the received signal which has units of dB/frequency, but
wasn't sure on if I can do that to calculate SNR.

Thanks!