Wenn Sie ein analoges Signal in ein digitales Signal umwandeln, können Sie nur Frequenzen bis zur Hälfte der Abtastfrequenz $ f_s $ beobachten. Diese Frequenz wird als Nyquist-Frequenz bezeichnet, es ist jedoch bekannt, dass Vibrationen, die diese Nyquist-Frequenz überschreiten, nicht beobachtet werden können. Schwingungen oberhalb dieser Nyquist-Frequenz werden als niedrige Frequenzen behandelt. Das Behandeln von Hochfrequenzschwingungen, die die Nyquist-Frequenz überschreiten, als niedrige Frequenzen wird als Aliasing (Faltrauschen) bezeichnet.
Betrachtet man die diskrete Fourier-Transformation von Daten mit $ N $ -Zahlen von $ x_0 $ bis $ x_ {N-1} $
C_k = \frac{1}{N}\sum_{m=0}^{N-1} x_me^{-i\frac{2\pi km}{N}}
k = 0, 1, 2, …, N-1
Die Frequenz entsprechend k ist
f_k = \frac{kf_s}{N}
Es wird sein. Da k bis zu (N-1) existiert, wird es zu $ f_ {N-1} = \ frac {(N-1) f_s} {N} $, und sogar Schwingungen, die die Nyquist-Frequenz von $ f_s / 2 $ überschreiten, können ausgedrückt werden. Das ist richtig ..., $ C_k $ und $ C_ {Nk} $ sind als komplexe Zahlen bekannt, die miteinander konjugiert sind.
C_k = C_{N-k}^*
Daher erfolgt das Umbrechen zentriert auf $ f_s / 2 $. Haben Sie keine Angst vor Missverständnissen, die $ C_ {N-k} $ -Welle wird als $ C_k $ -Frequenzwelle behandelt.
Verwenden Sie numpy, um ein hochauflösendes Bild (5000 x 5000) zu erstellen. Dies wird als pseudoanaloges Signal angesehen.
import numpy as np
import matplotlib.pyplot as plt
#Geben Sie die Bildgröße an
img_size_origin = 5000
#Nullmatrix als Bild
img = np.zeros([img_size_origin, img_size_origin])
#Bildpixelwerte hängen von der y-Koordinate ab
y = np.arange(img_size_origin)
#Periode 100 Pixel
amp = np.sin(2*np.pi*0.01*y)
for i in range(img_size_origin):
img[:, i] = amp
plt.imshow(img, cmap="gray")
plt.show()
Dadurch wird ein Bild mit 50 Streifen erzeugt. Da es 50 Streifen hat, gibt es 50-Hz-Wellen, wenn das gesamte Bild als ein Zyklus betrachtet wird.
Extrahieren Sie nur 1 Pixel pro [comp × comp] aus diesem Bild und generieren Sie ein neues Bild. Wenn comp = 5 ist, befinden sich die extrahierten Pixel an den Koordinaten [3 + 5n, 3 + 5m]. (n> = 0, m> = 0)
comp = 99
#Berechnen Sie die Größe des Ausgabebildes
img_size = img.shape[0]//comp
print(img_size)
#Ausgabebild
img_comp = np.zeros([img_size, img_size])
#[comp×comp]Extrahieren Sie nur das mittlere Pixel aus den Pixeln von
for i in range(img_size):
for j in range(img_size):
img_comp[i, j] = img[(i*comp) + (comp//2), (j*comp) + (comp//2)]
plt.imshow(img_comp, cmap="gray")
plt.show()
plt.plot(img_comp[:, 0])
plt.show()
Ich konnte die 50-Hz-Welle nicht gut beobachten und es wurde eine 0,5-Hz-Welle.
Ich konnte die 50-Hz-Welle nicht gut beobachten und es wurde eine 1-Hz-Welle.
Ich konnte die 50-Hz-Welle nicht gut beobachten und es stellte sich heraus, dass es sich um eine 2-Hz-Welle handelte.
Es scheint, dass viele mysteriöse Bilder gemacht werden können (kleines Durchschnittsgefühl)
Recommended Posts