Numpy FFT: Cara Menerapkan Transformasi Fourier dalam Python – Codewithaden

Transformasi Fourier menguraikan fungsi menjadi frekuensi konstituennya. Kasus tertentu adalah ekspresi akord musik dalam hal volume dan frekuensi catatan konstituennya.

Fourier Transform adalah konsep terapan di dunia sains dan pemrosesan sinyal digital. FT (Fourier Transform) memberikan representasi domain frekuensi dari sinyal asli.

Sebagai contoh, mengingat sinyal sinusoidal dalam domain waktu, transformasi Fourier memberikan frekuensi sinyal konstituen.

Menggunakan transformasi Fourier, sinyal periodik dan non-periodik dapat diubah dari waktu ke domain frekuensi. Tapi, pertama, mari kita lihat bagaimana menghitung transformasi Fourier dalam Python.

Numpy FFT

Numpy fft.fft () adalah fungsi yang menghitung transformasi Fourier diskrit satu dimensi. Metode numpy fft.fft () menghitung diskrit satu dimensi -Point Discrete Fourier Transform (DFT) dengan algoritma Fast Fourier Transform (FFT) yang efisien [CT].

Jika Anda sudah menginstal Numpy dan SCIPY Dan ingin membuat FFT sederhana dari dataset, Anda dapat menggunakan fungsi numpy fft.fft ().

Sintaksis

numpy.fft.fft(a, n=None, axis=-1, norm=None) 

Parameter

array_ like

Array input bisa rumit.

int, opsional

Panjang sumbu yang diubah dari output. Jika lebih kecil dari panjang input, maka input dipotong. Jika lebih besar, maka inputnya empuk dengan nol. Jika tidak diberikan, maka panjang input di sepanjang sumbu yang ditentukan oleh sumbu digunakan.

sumbu int, opsional

Sumbu untuk menghitung FFT. Jika tidak diberikan, maka sumbu terakhir digunakan.

norma {Tidak ada, “ortho”}, opsional

Baru dalam versi 1.10.0.

Mode Normalisasi (lihat numpy.fft ). Default adalah Tidak ada

xample

Sebelum menulis kode apa pun, silakan instal paket berikut.

  1. Matplotlib: python3 -m Pip instal -u matplotlib
  2. numpy: python3 -m pip instal -u numpy
  3. Scipy: python3 -m pip instal -u Scipy

Tulis kode berikut di dalam app.py mengajukan.

# app.py

import matplotlib.pyplot as plt
import numpy as np
import scipy.fftpack

# Number of sample points
N = 600
# sample spacing
T = 1.0 / 800.0
x = np.linspace(0.0, N*T, N)
y = np.sin(50.0 * 2.0*np.pi*x) + 0.5*np.sin(80.0 * 2.0*np.pi*x)
yf = scipy.fftpack.fft(y)
xf = np.linspace(0.0, 1.0//(2.0*T), N//2)

fig, ax = plt.subplots()
ax.plot(xf, 2.0/N * np.abs(yf[:N//2]))
plt.show()
 

Keluaran

Numpy

Contoh 2

Tulis kode berikut di dalam app.py mengajukan.

# app.py

import matplotlib.pyplot as plt
import numpy as np

t = np.arange(256)
sp = np.fft.fft(np.sin(t))
freq = np.fft.fftfreq(t.shape[-1])
plt.plot(freq, sp.real, freq, sp.imag)
plt.show()
 

Keluaran

How

Dalam contoh di atas, input nyata memiliki Hermitian FFT. Misalnya, simetris di bagian nyata dan anti-simetris di bagian imajiner, seperti yang dijelaskan dalam numpy.fft dokumentasi.

Kesimpulan

Fast Fourier Transform (FFT) adalah salah satu algoritma pemrosesan sinyal dan analisis data yang paling penting. FFT adalah cepat, O[NlogN]

> catatan ] algoritma untuk menghitung transformasi fourier diskrit (dft), yang secara naif adalah sebuah O[N2]

> [N^2] komputasi. DFT, seperti versi kontinu yang lebih akrab dari transformasi Fourier, memiliki bentuk maju dan terbalik.

Itu saja untuk contoh ini.

Artikel ini berasal dari website Winpoin, dan kemudian diterjemahkan ke bahasa indonesia, baca artikel asli disini

Leave a Reply

Your email address will not be published. Required fields are marked *