# Calculating SNR of an acoustic signal

Started by 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

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

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.

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.
&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;
```
```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.
&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;
```
```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.

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

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

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!

```