Muestreo aleatorio vs muestreo uniforme

7

En este artículo de Lustig, habla de algo que parece poco intuitivo: el muestreo aleatorio puede exhibir un mejor rendimiento que el muestreo uniforme. Traté de entender esto a partir de la página 15 de estas diapositivas , pero realmente no puedo entender nada.

¿Por qué, si tomamos permutación aleatoria de los coeficientes de frecuencia, obtenemos una mejor reconstrucción en términos de similitud de señal? ¿Por qué esto da una mejor reconstrucción, y cuál es la intuición detrás del fenómeno?

Flecha
fuente
2
No soy un experto en este campo, pero si la técnica se basa en CS, la reconstrucción se puede lograr con menos muestras que con un muestreo uniforme, siempre que la matriz de datos sea escasa. Si compara ambos sistemas a una frecuencia de muestreo dada, ya que necesita menos muestras con CS, entonces se pueden usar muestras adicionales para aumentar aún más el rendimiento.
vaz
@vaz por CS Supongo que te refieres a la detección comprimida ( en.wikipedia.org/wiki/Compressed_sensing )
Olli Niemitalo el
@OlliNiemitalo Sí, lo siento. El artículo citado en la pregunta trata sobre la detección comprimida.
vaz

Respuestas:

3

La idea clave es que el enfoque de muestreo aleatorio impone más restricciones en la señal resultante que el enfoque de muestreo uniforme.

El algoritmo POCS (proyecciones sobre conjuntos convexos) utilizado para la reconstrucción de la señal muestreada al azar es la pieza clave: impone:

  • Que la señal debe ser de este espectro.
  • Que la señal tiene un valor real.
  • Lo que sabemos sobre el espectro de la señal (los coeficientes de Fourier muestreados al azar).
  • Lo que sabemos sobre la forma de dominio de tiempo de la señal.

El enfoque de muestreo uniforme no intenta imponer la restricción en negrita .

Aquí hay un ejemplo que muestra:

  • Arriba a la izquierda: Submuestreo y reconstrucción uniformes utilizando solo la FFT.
  • Arriba a la derecha: Submuestreo aleatorio y reconstrucción utilizando solo la FFT.
  • Abajo a la izquierda: reconstrucción mediante POCS

Como puede ver, esa restricción final realmente mejora enormemente la reconstrucción.

ingrese la descripción de la imagen aquí


Código R a continuación

#30219

T <- 128
N <- 5

x <- rep(0, T)
x[sample(T,N)] <- rep(1,N)

X <- fft(x);
Xu <- rep(0, T)
Xu[seq(1,T,4)] <- X[seq(1,T,4)];
xu <- fft(Xu, inverse = TRUE)*4/T;

par(mfrow=c(2,2))
plot(x, type="l", lwd = 5, ylim = c(0,1.2))
lines(abs(xu), col="red")
title('Original (black) & reconstructed\n from uniform undersampling (red)')

Xr <- rep(0,T)
r_ix <- sample(T,T/4)
Xr[r_ix] <- X[r_ix]
xr <- fft(Xr, inverse = TRUE)*4/T

plot(x, type="l", lwd = 5, ylim = c(0,1.2))
lines(abs(xr), col="red")
#lines(Re(xr), col="blue")
#lines(Im(xr), col="green")
title('Original (black) & reconstructed\n from non-uniform undersampling (red)')

#soft thresh function

softThresh <- function(vals_to_threshold, lambda)
{
  ix <- which(abs(vals_to_threshold) < lambda)
  vals_to_threshold[ix] <- rep(0, length(ix))

  ix <- which(vals_to_threshold >= lambda)
  vals_to_threshold[ix] <- vals_to_threshold[ix] - lambda

  ix <- which(vals_to_threshold <= -lambda)
  vals_to_threshold[ix] <- vals_to_threshold[ix] + lambda

  return(vals_to_threshold)
}

# POCS
lambda <- 0.1
Xhat <- Xr
for (iteration in seq(1,100))
{
  # 1. Compute the inverse FT to get estimate
  xhat <- Re(fft(Xhat, inverse = TRUE)/T)
  # 2. Apply Softrhesh in the time domain
  xhat <- softThresh(xhat, lambda)
  # 3. Find the FFT
  Xhat <- fft(xhat)
  # 4. Enforce known values
  Xhat[r_ix] <- X[r_ix]
}

plot(x, type="l", lwd = 5, ylim = c(0,1.2))
lines(xhat, col="red")
title('Reconstructed using POCS')
Peter K.
fuente