Tôi đã có một thuật toán không đệm một chuỗi thành 4N, thực hiện FFT và chỉ sử dụng điểm N tần số thấp nhất trong số 4N được tạo.
Điều này có vẻ như rất nhiều công việc lãng phí, bất kỳ ý tưởng làm thế nào điều này có thể được thực hiện nhanh hơn?
Tôi đã có một thuật toán không đệm một chuỗi thành 4N, thực hiện FFT và chỉ sử dụng điểm N tần số thấp nhất trong số 4N được tạo.
Điều này có vẻ như rất nhiều công việc lãng phí, bất kỳ ý tưởng làm thế nào điều này có thể được thực hiện nhanh hơn?
Câu trả lời:
Nếu bạn chỉ có một vài thùng thì những điều sau đây có thể rất hiệu quả đối với bạn:
1. Đơn giản chỉ cần thực hiện DFT của mỗi tần số bạn cần.
2. Sử dụng thuật toán Goertzel cho từng tần số trong câu hỏi.
Không đệm đến chiều dài 4X, tính toán FFT dài hơn, và sau đó chỉ sử dụng các thùng 1/4 dưới cùng tạo ra kết quả gần như giống hệt với phép nội suy Sinc của FFT có độ dài ban đầu.
Vì vậy, chỉ cần sử dụng độ dài FFT ban đầu và nội suy bằng hạt nhân nội suy 3 pha với độ rộng cửa sổ phù hợp.
Không đệm trong miền thời gian cung cấp cho bạn giải pháp tần số cao hơn nhưng không có thông tin mới, do đó, nó cung cấp về cơ bản nội suy trong miền tần số. Tùy thuộc vào bản chất của tín hiệu của bạn và độ chính xác cần thiết, bạn có thể có được các điểm tần số bổ sung với FFT thường xuyên của N điểm và thực hiện phép nội suy phù hợp (tuyến tính, spline, pchip, chân, v.v.).