Có, có thể biểu thị kết quả miền tần số FFT của đầu vào thực sự nghiêm ngặt chỉ sử dụng số thực.
Những số phức trong kết quả FFT chỉ đơn giản là 2 số thực, cả hai đều được yêu cầu để cung cấp cho bạn tọa độ 2D của vectơ kết quả có cả chiều dài và góc hướng (hoặc cường độ và pha). Và mọi thành phần tần số trong kết quả FFT có thể có biên độ duy nhất và một pha duy nhất (tương ứng với một số điểm trong khẩu độ FFT).
Một số thực không thể đại diện cho cả cường độ và pha. Nếu bạn vứt bỏ thông tin pha, điều đó có thể dễ dàng bóp méo tín hiệu nếu bạn cố gắng tạo lại nó bằng cách sử dụng một iFFT (và tín hiệu không đối xứng). Vì vậy, một kết quả FFT hoàn chỉnh yêu cầu 2 số thực trên mỗi thùng FFT. Hai số thực này được kết hợp với nhau trong một số FFT trong một kiểu dữ liệu phức tạp theo quy ước chung, nhưng kết quả FFT có thể dễ dàng (và một số FFT) chỉ tạo ra 2 vectơ thực (một cho các tọa độ cosin và một cho tọa độ sin).
Ngoài ra còn có các thủ tục FFT tạo ra độ lớn và pha trực tiếp, nhưng chúng chạy chậm hơn FFTs tạo ra kết quả vectơ phức tạp (hoặc hai thực). Cũng tồn tại các thủ tục FFT chỉ tính toán độ lớn và chỉ vứt bỏ thông tin pha, nhưng chúng thường chạy nhanh hơn cho phép bạn tự làm điều đó sau một FFT tổng quát hơn. Có lẽ họ tiết kiệm một coder một vài dòng mã với chi phí không thể đảo ngược. Nhưng rất nhiều thư viện không bận tâm bao gồm các hình thức FFT chậm hơn và ít tổng quát hơn này, và chỉ để người lập trình chuyển đổi hoặc bỏ qua những gì họ cần hoặc không cần.
Ngoài ra, nhiều người coi toán học liên quan đến việc là lô thanh lịch hơn bằng cách sử dụng số học phức tạp.
(Đã thêm :) Và, như một tùy chọn khác, bạn có thể xem xét hai thành phần của mỗi thùng kết quả FFT, thay vì thành phần thực và tưởng tượng, thành phần chẵn và lẻ, cả hai đều thực.
Điều gì về việc chuyển câu hỏi này sang DSP SX: http://dsp.stackexchange.com/? – petrichor
Bạn nên chọn một câu trả lời đúng. – Jonathan