snr {bspec} | R Documentation |

## Compute the signal-to-noise ratio (SNR) of a signal

### Description

Compute the SNR for a given signal and noise power spectral density.

### Usage

```
snr(x, psd, two.sided = FALSE)
```

### Arguments

`x` |
the signal waveform, a time series ( |

`psd` |
the noise power spectral density. May be a vector of
appropriate length ( |

`two.sided` |
a |

### Details

For a signal `s(t)`

, the complex-valued discrete
Fourier transform `\tilde{s}(f)`

is computed along the Fourier
frequencies ```
f_j=\frac{j}{N \Delta_t} |
j=0,\ldots,N/2+1
```

, where
`N`

is the sample size, and `\Delta_t`

is the
sampling interval.
The SNR, as a measure of "signal strength" relative to the noise, then
is given by

`\varrho=\sqrt{\sum_{j=0}^{N/2+1}\frac{\bigl|\tilde{s(f_j)}\bigr|^2}{\frac{N}{4\Delta_t} S_1(f_j)}},`

where `S_1(f)`

is the noise's one-sided power spectral
density. For more on its interpretation, see e.g. Sec. II.C.4 in the
reference below.

### Value

The SNR `\varrho`

.

### Author(s)

Christian Roever, christian.roever@med.uni-goettingen.de

### References

Roever, C.
A Student-t based filter for robust signal detection.
*Physical Review D*, **84**(12):122004, 2011.
doi: 10.1103/PhysRevD.84.122004.
See also arXiv preprint 1109.0442.

### See Also

### Examples

```
# sample size and sampling resolution:
N <- 1000
deltaT <- 0.001
# For the coloured noise, use some AR(1) process;
# AR noise process parameters:
sigmaAR <- 1.0
phiAR <- 0.9
# generate non-white noise
# (autoregressive AR(1) low-frequency noise):
noiseSample <- rnorm(10*N)
for (i in 2:length(noiseSample))
noiseSample[i] <- phiAR*noiseSample[i-1] + noiseSample[i]
noiseSample <- ts(noiseSample, deltat=deltaT)
# estimate the noise spectrum:
PSDestimate <- welchPSD(noiseSample, seglength=1,
windowingPsdCorrection=FALSE)
# generate a (sine-Gaussian) signal:
t0 <- 0.6
phase <- 1.0
t <- ts((0:(N-1))*deltaT, deltat=deltaT, start=0)
signal <- exp(-(t-t0)^2/(2*0.01^2)) * sin(2*pi*150*(t-t0)+phase)
plot(signal)
# compute the signal's SNR:
snr(signal, psd=PSDestimate$power)
```

*bspec*version 1.6 Index]