[PYTHON] Eigenschaften der diskreten Fourier-Transformation

Inhaltsverzeichnis

  1. Zuallererst --Derivierung der diskreten Fourier-Transformation

1. Zuallererst

Der Zweck dieses Artikels ist es, die Eigenschaften diskreter Fourier-Transformationen wie spektrale Symmetrie und Periodizität zu verstehen.

2. Ableitung der diskreten Fourier-Transformation

Das diskrete Signal $ x_ {Abtastung} (t) $, das durch Abtasten des kontinuierlichen Zeitsignals $ x (t) $ im Intervall $ T $ erhalten wird, wird wie folgt ausgedrückt. $ x_{sampling}(t)=\sum_{n=0}^{\infty} x(n)\delta(t-nT) \tag{1}$ Wenn dieses diskrete Signal $ x_ {Abtastung} (t) $ Fourier-transformiert wird

\begin{eqnarray}
\mathcal{F}[x_{sampling}(t)] &=& \int_{-\infty}^{\infty}x_{sampling}(t)e^{-j\omega t}dt \\
&=& \int_{-\infty}^{\infty} \, \sum_{n=0}^{\infty}x(n)\delta(t-nT) \, e^{-j\omega t}dt \\
&=& \sum_{n=0}^{\infty}x(n)\int_{-\infty}^{\infty}\delta(t-nT) \, e^{-j\omega t}dt \\
&=& \sum_{n=0}^{\infty}x(n) e^{-j\omega nT} \tag{2}
\end{eqnarray}

Es wird sein.

Angenommen, der Beispielwert $ x (n) $ besteht aus $ N $ Punkten. Wie in der folgenden Abbildung gezeigt, wird der aus $ N $ Punkten bestehende Abtastwert $ x (n) $ als ein Zyklus des Signals angesehen. Die Winkelfrequenz zu diesem Zeitpunkt wird als $ 2 \ pi / NT $ ausgedrückt und als Grundwinkelfrequenz bezeichnet.

Die Winkelfrequenz, die ein ganzzahliges Vielfaches der Grundwinkelfrequenz ist, wird durch $ \ omega = \ frac {2 \ pi} {NT} k ; ; (k = 0,1,2, ..., N-1) $ dargestellt. Repräsentiert Komponenten mit höherer Frequenz. Einsetzen dieses $ \ omega = \ frac {2 \ pi} {NT} k $ in den $ (2) $ -Ausdruck $ \sum_{n=0}^{\infty}x(n) e^{-j\frac{2\pi}{NT}knT} $ Es wird sein. Wenn man bedenkt, dass der Stichprobenwert $ x (n) $ aus $ N $ Punkten besteht, $ \sum_{n=0}^{N-1}x(n) e^{-j\frac{2\pi}{NT}knT} = \sum_{n=0}^{N-1}x(n) e^{-j2\pi k\frac{n}{N}} \tag{3} $ Es wird sein. Nehmen wir zur Vereinfachung an: $ W = e ^ {-j \ frac {2 \ pi} {N}} $ $ X(k) = \sum_{n=0}^{N-1}x(n)W^{kn} \tag{4} $ Daher konnten wir die diskrete Fourier-Transformationsgleichung ableiten.

Die diskrete Fourier-Transformation der $ (4) $ -Gleichung bedeutet, dass sie die Ähnlichkeit zwischen dem Abtastwert $ x (n) $ und der komplexen Variablen $ W ^ {kn} $ berechnet. Wie in der folgenden Abbildung gezeigt, wird die Frequenzkomponente des Abtastwerts $ x (n) $ erhalten, indem das innere Produkt aus dem Abtastwert $ x (n) $ und der komplexen Variablen $ W ^ {kn} $ mit unterschiedlichen Frequenzen genommen wird. Ich kann. Aufgrund der Art der diskreten Fourier-Transformation können Frequenzkomponenten jedoch an anderen Stellen als den ursprünglichen Frequenzkomponenten des Abtastwerts $ x (n) $ auftreten. (Beschrieben in 3. Eigenschaften der diskreten Fourier-Transformation)

3. Eigenschaften der diskreten Fourier-Transformation

Sei m eine beliebige ganze Zahl

\begin{eqnarray}
X(k+mN) &=&\sum_{n=0}^{N-1}x(n)W^{(k+mN)n} \\
&=&\sum_{n=0}^{N-1}x(n)W^{kn}W^{mNn} \\
&=&\sum_{n=0}^{N-1}x(n)W^{kn} 
= X(k)
\end{eqnarray}

Nächster, $X(k+mN)=X(k) \tag{5}$ Ist festgelegt. Dies bedeutet, dass für jede Abtastfrequenz im Frequenzspektrum das gleiche Spektrum erscheint.

\begin{eqnarray}
X(N-k) &=& \sum_{n=0}^{N-1}x(n)W^{(N-k)n} \\
&=& \sum_{n=0}^{N-1}x(n)W^{Nn}W^{-kn} \\
&=& \sum_{n=0}^{N-1}x(n)W^{-kn} \\
&=& [\,\sum_{n=0}^{N-1}x(n)W^{kn}\,]^{*} = X(k)^{*}
\end{eqnarray}

Nächster, $X(N-k) = X(k)^{*} \tag{6}$ Ist festgelegt.

Um unser Verständnis der Eigenschaften der diskreten Fourier-Transformation zu vertiefen, betrachten wir nun das Spektrum, das durch die tatsächliche diskrete Fourier-Transformation erhalten wird. Führen Sie eine diskrete Fourier-Transformation mit dem im Anhang gezeigten Programm durch. Das in der folgenden Abbildung gezeigte kontinuierliche Zeitsignal $ x (t) = cos (2 \ pi ft) $ wird abgetastet. Die Frequenz $ f $ des kontinuierlichen Zeitsignals $ x (t) $ beträgt $ 1000 [Hz] $.

Zunächst ist das Signal $ x (n) $, das unter dem kontinuierlichen Zeitsignal $ x (t) $ mit der Abtastfrequenz $ f_ {Abtastung} = 4000 [Hz] $ abgetastet wurde, und der Anzahl der Abtastungen $ N = 32 $ in der folgenden Abbildung dargestellt. Es wird in gezeigt.

Als nächstes ist das Frequenzspektrum, das durch die diskrete Fourier-Transformation des Abtastwerts $ x (n) $ erhalten wird, in der folgenden Abbildung gezeigt. Aus der Figur ist ersichtlich, dass die Komponente von $ 1000 [Hz] $, die die Frequenz des kontinuierlichen Zeitsignals $ x (t) $ ist, erscheint. Aufgrund der Symmetrie des in der $ (6) $ -Gleichung gezeigten Spektrums wird jedoch ein liniensymmetrisches Spektrum um $ 2000 [Hz] $ erzeugt, was der Hälfte der Abtastfrequenz entspricht. Dies bedeutet, dass weniger als die Hälfte der Abtastfrequenz korrekt dargestellt werden kann. Gemäß dem Abtasttheorem kann das ursprüngliche Signal herabgestuft werden, indem mindestens die doppelte maximale Frequenz des kontinuierlichen Zeitsignals $ x (t) $ abgetastet wird. Die "mehr als doppelte Frequenz" des Abtasttheorems ist auf die Symmetrie der diskreten Fourier-Transformation zurückzuführen.

4. Referenzen

Anhang: Diskretes Fourier-Transformationsprogramm in Python

DFT.py


import numpy as np
import cmath
import matplotlib.pyplot as plt

f_xn = 1000 #Eingangssignal x(n)Frequenz von
f_sampling = 4000 #Abtastfrequenz
T = 1.0 / f_sampling #Abtastintervall
N = 32 #Anzahl von Beispielen

t = np.arange(0, N*T, T) #Zeitachse
width = 3 #Anzeigebreite der Frequenzachse(Wie oft wird die Abtastfrequenz angezeigt?)
freq = np.linspace(0,f_sampling*width, N*width, endpoint=False).reshape([-1,1]) #Frequenzachse

n = np.arange(N) #Gesamtindex
k = np.arange(N*width).reshape([-1,1]) #Index von k
x_n = np.cos(2*np.pi*f_xn*t) #Abtastwert x(n)
W_kn = np.exp(-1j*2*np.pi*n/N *k) #Komplexe Variable W._kn
X_k = np.sum(x_n*W_kn, axis=1) #Summe

amp = np.abs(X_k) #Schwingungskomponente

#Grafikanzeige
plt.figure()
plt.rcParams['font.family'] = 'Arial'
plt.rcParams['font.size'] = 17
plt.subplot(2,1,1)
plt.plot(t, x_n, marker='o', color='r')
plt.xlabel("time[s]", fontsize=20)
plt.ylabel("x(n)", fontsize=20)
plt.grid()
plt.subplot(2,1,2)
plt.plot(freq, amp, marker='o',color='b')
plt.xlabel('frequency[Hz]', fontsize=20)
plt.ylabel('amplitude', fontsize=20)
plt.grid()
plt.subplots_adjust(wspace=0.4, hspace=0.4)
plt.show()

Recommended Posts

Eigenschaften der diskreten Fourier-Transformation
Fourier-Transformation von Rohdaten
Vergleichen wir die Fourier-Transformation der synthetisierten Schallquelle und die Zusammensetzung der Fourier-Transformation
Die Bedeutung des Selbst
der Zen von Python
Die Geschichte von sys.path.append ()
Wie man den Satz von Persival mit Matplotlib und der Fourier-Transformation (FFT) von scipy bestätigt
Qiskit: Quanten-Fourier-Transformation
Die neueste Version von Pillow 7.0.0 wird die Transformation von Pytorch beenden.
Rache der Typen: Rache der Typen
Richten Sie die Version von chromedriver_binary aus
Scraping das Ergebnis von "Schedule-Kun"
10. Zählen der Anzahl der Zeilen
Auf dem Weg zum Ruhestand von Python2
Holen Sie sich die Anzahl der Ziffern
Erläutern Sie den Code von Tensorflow_in_ROS
Verwenden Sie die Clustering-Ergebnisse erneut
Diskrete Kosinusumwandlung mit chainer.links.Linear
GoPiGo3 des alten Mannes
Berechnen Sie die Anzahl der Änderungen
Ändern Sie das Thema von Jupyter
Die Popularität von Programmiersprachen
Ändern Sie den Stil von matplotlib
Visualisieren Sie die Flugbahn von Hayabusa 2
Über die Komponenten von Luigi
Verknüpfte Komponenten des Diagramms
Filtern Sie die Ausgabe von tracemalloc
Über die Funktionen von Python
Simulation des Inhalts der Brieftasche
Die Kraft der Pandas: Python