Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Matplotlib - วาด FFT ของสัญญาณพร้อมความถี่ที่ถูกต้องบนแกน X

คำนวณ FFT และแสดงแกน X เป็นความถี่จริง (Hz) ไม่ใช่ Bin Index

ขั้นตอน

  1. ตั้งค่าขนาด Figure
  2. กำหนด N (จำนวนตัวอย่าง) และ m (ความถี่สัญญาณ)
  3. สร้างสัญญาณ Sine Wave: signal = sin(2π·m/N·t)
  4. คำนวณ FFT: ft = np.fft.fft(signal)
  5. หาความถี่จริง: freq = np.fft.fftfreq(N)
  6. วาด freq vs |ft|^2 (Power Spectrum)

ตัวอย่างโค้ด

import numpy as np
import matplotlib.pyplot as plt

plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True

N = 256
t = np.arange(N)
m = 4
nu = float(m)/N

signal = np.sin(2*np.pi*nu*t)
ft = np.fft.fft(signal)
freq = np.fft.fftfreq(N)

plt.plot(freq, ft.real**2 + ft.imag**2)
plt.show()

ผลลัพธ์

กราฟ Power Spectrum แสดง Peak ที่ความถี่ ±4/256

Matplotlib - วาด FFT ของสัญญาณพร้อมความถี่ที่ถูกต้องบนแกน X