Bạn cần biết các yêu cầu về số của thuật toán của bạn và chọn độ chính xác cho phù hợp.
Vì vậy, hãy làm toán ở đây: Điểm nổi 32 bit có mantissa 24 bit và số mũ 8 bit. Điều này cung cấp cho bạn khoảng 150 dB tín hiệu cho tỷ lệ nhiễu trong phạm vi động khoảng 1540 dB. Đó là rất nhiều cho hầu hết mọi thứ âm thanh. Độ chính xác gấp đôi mang lại cho bạn khoảng gấp đôi.
Mỗi thuật toán có các yêu cầu nhất định về độ chính xác số. Nếu được thiết kế đúng tất cả các thuật toán âm thanh mà tôi biết chỉ làm tốt với điểm nổi 32 bit. "Thiết kế đúng" là từ khóa ở đây. Ví dụ, băng tần thứ 6 truyền từ 40-200 Hz được lấy mẫu ở mức 44,1kHz được triển khai dưới dạng trực tiếp từ bộ lọc bi-quad II IIR thực sự sẽ có một số vấn đề nhiễu ở 32 bit. Tuy nhiên, nó hoạt động hoàn toàn tốt như bộ lọc chuyển tiếp mẫu II hoặc bộ lọc trực tiếp I.
Nếu bạn thử mở rộng một phần của bộ lọc thông dải tương tự bằng cách sử dụng chức năng Residuez () của Matlab, bạn sẽ nhận được kết quả xấu ngay cả với độ chính xác gấp đôi. Một lần nữa, các yêu cầu về số của thuật toán đối với dữ liệu đầu vào cụ thể đó vượt quá độ chính xác gấp đôi. Chìa khóa để khắc phục điều này không phải là mù quáng tăng độ chính xác, mà là sử dụng thuật toán tốt hơn để thay thế.
Cuối cùng, hãy xem điều gì làm cho độ nổi (32 bit hoặc 64 bit) dễ bị tổn thương: Bạn có dải động cực lớn, tức là bạn có thể giảm tín hiệu xuống 200dB, khuếch đại 500dB, giảm lại 300dB và bạn kết thúc chính xác nơi bạn bắt đầu gần như không mất gì về độ chính xác. Vì vậy, đó không phải là nó. Điểm nổi có vấn đề khi thêm các số có kích thước rất khác nhau. Có một điểm khi thêm một số nhỏ sẽ không tạo ra sự khác biệt nào, tức là bạn nhận được 1 + dx = 1. Con số "dx" này là khoảng 1,2e-7 cho điểm nổi 32 bit và 2,2e-16 cho 64 bit. Nếu thuật toán của bạn bao gồm cộng hoặc trừ các số cách xa nhau về độ lớn, bạn có thể gặp vấn đề.
Một ví dụ điển hình cho điều này là bộ lọc Direct Form II đã đề cập trước đó: Bộ lọc From II trực tiếp (xem ví dụ: https://ccrma.stanford.edu/~jos/fp/Direct_Form_II.html ) về cơ bản tính toán các biến trạng thái bằng cách lọc đầu vào với chức năng chuyển chỉ cực đầu tiên và sau đó lọc với các số không để tạo đầu ra. Bây giờ nếu các cực gần với vòng tròn đơn vị, hàm truyền chỉ cực sẽ rất, rất lớn. Vì vậy, biến trạng thái có thể lớn hơn nhiều so với đầu vào (lớn hơn 80db đến 100dB) và tổng các biến trạng thái với đầu vào tạo ra rất nhiều nhiễu.
Giải pháp ở đây là chuyển đến bộ lọc Mẫu II chuyển đổi hoặc Mẫu I trực tiếp. Phân tích cho thấy các biến trạng thái không thể lớn hơn đầu vào / đầu ra sau đó có thể là 12dB hoặc khoảng đó, do đó, sự không phù hợp cường độ không xảy ra ở vị trí đầu tiên.