Zufallsstichprobe vs. einheitliche Stichprobe

7

In diesem Artikel von Lustig spricht er über etwas, das nicht intuitiv erscheint: Zufällige Stichproben können eine bessere Leistung zeigen als einheitliche Stichproben. Ich habe versucht, dies ab Seite 15 dieser Folien zu verstehen , aber ich kann aus nichts wirklich einen Sinn machen.

Warum erhalten wir eine bessere Rekonstruktion hinsichtlich der Signalähnlichkeit, wenn wir zufällige Permutationen von Frequenzkoeffizienten vornehmen? Warum führt dies zu einer besseren Rekonstruktion und welche Intuition steckt hinter dem Phänomen?

Pfeil
quelle
2
Kein Experte auf diesem Gebiet, aber wenn die Technik auf CS basiert, kann die Rekonstruktion mit weniger Stichproben als mit einheitlicher Stichprobe erreicht werden, solange die Datenmatrix dünn ist. Wenn Sie beide Systeme mit einer bestimmten Abtastrate vergleichen, da Sie weniger Proben mit CS benötigen, können zusätzliche Proben verwendet werden, um die Leistung weiter zu steigern.
Vaz
@vaz von CS Ich denke, Sie meinen komprimierte
Wahrnehmung
@OlliNiemitalo Ja, sorry. Das in der Frage zitierte Papier befasst sich mit der komprimierten Abtastung.
Vaz

Antworten:

3

Die Schlüsselidee ist, dass der Zufallsstichprobenansatz dem resultierenden Signal mehr Einschränkungen auferlegt als der einheitliche Abtastansatz.

Der POCS-Algorithmus (Projektionen auf konvexe Mengen), der für die Rekonstruktion des zufällig abgetasteten Signals verwendet wird, ist das Schlüsselstück: Er erzwingt:

  • Dass das Signal aus diesem Spektrum stammen muss.
  • Dass das Signal reellwertig ist.
  • Was wir über das Spektrum des Signals wissen (die zufällig abgetasteten Fourier-Koeffizienten).
  • Was wir über die Zeitbereichsform des Signals wissen.

Der einheitliche Stichprobenansatz unternimmt keinen Versuch, die kühne Einschränkung durchzusetzen .

Hier ist ein Beispiel, das zeigt:

  • Oben links: Einheitliche Unterabtastung und Rekonstruktion nur mit der FFT.
  • Oben rechts: Zufällige Unterabtastung und Rekonstruktion nur mit der FFT.
  • Unten links: Rekonstruktion mit POCS

Wie Sie sehen können, verbessert diese letzte Einschränkung die Rekonstruktion erheblich.

Geben Sie hier die Bildbeschreibung ein


R-Code unten

#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.
quelle