Amostragem aleatória vs amostragem uniforme


7

No presente trabalho de Lustig, ele fala sobre uma coisa que parece intuitiva: amostragem ao acaso podem apresentar melhor desempenho do que a amostragem de maneira uniforme. Tentei entender isso a partir da página 15 desses slides , mas não consigo entender nada.

Por que, se tomarmos a permutação aleatória dos coeficientes de frequência, obteremos uma melhor reconstrução em termos de semelhança de sinal? Por que isso dá uma melhor reconstrução e qual é a intuição por trás do fenômeno?


2
Não é um especialista nesse campo, mas, se a técnica for baseada em CS, a reconstrução poderá ser realizada com menos amostras do que com amostragem uniforme, desde que a matriz de dados seja escassa. Se você comparar os dois sistemas em uma determinada taxa de amostragem, pois precisará de menos amostras com o CS, amostras extras poderão ser usadas para aumentar ainda mais o desempenho.
vaz

@vaz por CS Eu acho que você quer dizer sensoriamento comprimido ( en.wikipedia.org/wiki/Compressed_sensing )
Olli Niemitalo

@OlliNiemitalo Sim, desculpe. O artigo citado na pergunta é sobre detecção compactada.
vaz

Respostas:


3

A idéia principal é que a abordagem de amostragem aleatória imponha mais restrições ao sinal resultante do que a abordagem uniforme de amostragem.

O algoritmo POCS (projeções em conjuntos convexos) usado para a reconstrução do sinal amostrado aleatoriamente é a peça principal: ele impõe:

  • Que o sinal deve ser desse espectro.
  • Que o sinal é real.
  • O que sabemos sobre o espectro do sinal (os coeficientes de Fourier amostrados aleatoriamente).
  • O que sabemos sobre a forma no domínio do tempo do sinal.

A abordagem de amostragem uniforme não tenta impor a restrição em negrito .

Aqui está um exemplo que mostra:

  • Superior esquerdo: subamostragem uniforme e reconstrução usando apenas a FFT.
  • Superior direito: Subamostragem aleatória e reconstrução usando apenas a FFT.
  • Em baixo à esquerda: reconstrução usando POCS

Como você pode ver, essa restrição final realmente melhora bastante a reconstrução.

insira a descrição da imagem aqui


Código R Abaixo

#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')
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.