Vâng, nó không tầm thường đối với tôi, nhưng đây là cách tôi hiểu nó. Nếu tôi đã đơn giản hóa nó hoàn toàn là vì lợi ích của tôi, tôi không có nghĩa là để được bảo trợ.
Zeroing kết quả tương ứng với tần số Nyquist:
Tôi sẽ giả sử chúng ta đang tính toán FFT phía trước 1024 mẫu đầu vào. Tại 44100hz đầu vào này thường là đúng trong trường hợp của tôi (nhưng không phải là những gì AurioTouch đang làm, mà tôi tìm thấy một chút lạ, nhưng tôi không có chuyên gia). Tôi dễ hiểu hơn với các giá trị cụ thể.
Cho 1024 (n) mẫu đầu vào, được sắp xếp khi cần (ngay cả chỉ mục 'đầu tiên sau đó chỉ mục lẻ' {in [0], in [2], in [4],…, in 1, in [3], trong [5], ...}) (sử dụng vDSP_ctoz()
để đặt hàng đầu vào của bạn)
Kết quả của FFT 1024 mẫu (n) đầu vào là ((n/2) +1) giá trị phức tạp. tức là 513 thực thành phần và 513 tưởng tượng thành phần, tổng số giá trị.
Tuy nhiên, tưởng tượng [0] và tưởng tượng [512] (n/2) luôn, nhất thiết, zero. Vì vậy, bằng cách đặt thực [512] (thành phần thực của thùng tần số Nyquist) tại tưởng tượng [0] và quên tưởng tượng [512] - luôn luôn bằng không và có thể suy ra, kết quả được đóng gói vào (n) bộ đệm độ dài.
Vì vậy, đối với kết quả trả về hợp lệ, bạn phải đặt ít nhất tưởng tượng [0] về 0. Nếu bạn yêu cầu tất cả ((n/2) +1) thùng tần số bạn cần phải thêm một giá trị phức tạp để kết quả và thiết lập nó như vậy ..
unpackedVal = imaginary[0]
real[512]=unpackedVal, imaginary[512]=0
imaginary[0] = 0
Trong AurioTouch tôi luôn coi họ chỉ don' t bận tâm.n/2 kết quả rõ ràng là thuận tiện hơn để làm việc với và bạn khó có thể nói từ visualizer: - "Oh nhìn, nó còn thiếu một tầm quan trọng ở tần số Nyquist"
The UsingFourierTransforms docs explain the packing
NB các giá trị cụ thể 1024, 513, 512, v.v. là các ví dụ không phải là giá trị thực của n, (n/2) +1, n/2 từ AurioTouch.
Họ mở rộng tất cả mọi thứ xuống bởi -128db
Không hẳn, phạm vi của các giá trị đầu ra là so với số lượng mẫu đầu vào vì vậy nó phải được chuẩn hóa. Tỷ lệ là 1.0/(2 * inNumberFrames).
Sau khi mở rộng phạm vi là -1.0 -> +1.0. Độ lớn của vector phức tạp sau đó được thực hiện (giai đoạn bị bỏ qua) đưa ra một giá trị vô hướng cho mỗi bin tần số giữa 0 và 1,0
Giá trị này sau đó được giải thích như là một giá trị decibel giữa -128 và 0
Công cụ vẽ… +80/64.… * 120…… tôi không chắc chắn. Tôi có thể hoàn toàn sai hoặc có thể là… giấy phép nghệ thuật?
Cảm ơn bạn đã dành thời gian giải thích điều này cho tôi. –