SoftGNSS/fft.py
2025-10-22 16:08:12 +07:00

29 lines
661 B
Python

import numpy as np
import time
# Kích thước ma trận
N = 256
M = 256
# === Tạo tín hiệu 2D (ví dụ: sóng sin theo hai chiều) ===
x = np.zeros((N, M))
for i in range(N):
for j in range(M):
x[i, j] = np.sin(2 * np.pi * 8 * i / N) + np.sin(2 * np.pi * 5 * j / M)
# === FFT 2D ===
t0 = time.time()
X = np.fft.fft2(x)
t1 = time.time()
print(f"FFT 2D time: {(t1 - t0) * 1e3:.2f} ms")
# === IFFT 2D ===
t2 = time.time()
x_rec = np.fft.ifft2(X)
t3 = time.time()
print(f"IFFT 2D time: {(t3 - t2) * 1e3:.2f} ms")
# === Kiểm tra độ chính xác ===
error = np.max(np.abs(x - x_rec.real))
print(f"Max reconstruction error: {error:.3e}")