Tôi đang mã hóa một cái gì đó tại thời điểm mà tôi đang dùng một loạt các giá trị theo thời gian từ một la bàn phần cứng. La bàn này là rất chính xác và cập nhật rất thường xuyên, với kết quả là nếu nó cười khúc khích một chút, tôi kết thúc với giá trị kỳ lạ đó là cực kỳ không phù hợp với các nước láng giềng của nó. Tôi muốn làm mịn những giá trị đó.Làm mịn các giá trị theo thời gian: di chuyển trung bình hoặc một cái gì đó tốt hơn?
Sau khi đọc xong, có vẻ như những gì tôi muốn là bộ lọc thông cao, bộ lọc thông thấp hoặc trung bình di chuyển. Di chuyển trung bình tôi có thể nhận được, chỉ cần giữ một lịch sử của 5 giá trị cuối cùng hoặc bất cứ điều gì, và sử dụng trung bình của những giá trị hạ lưu trong mã của tôi, nơi tôi đã từng chỉ sử dụng giá trị gần đây nhất. Đó là, tôi nghĩ rằng, mịn ra những tiếng cười khúc khích độc đáo, nhưng nó tấn công tôi rằng nó có thể khá kém hiệu quả, và điều này có lẽ là một trong những vấn đề được biết đến đúng lập trình mà có một giải pháp Clever Math thực sự gọn gàng.
Tuy nhiên, tôi là một trong những lập trình viên tự học khủng khiếp không có giáo dục chính quy trong bất kỳ thứ gì mơ hồ liên quan đến CompSci hoặc Toán. Đọc xung quanh một chút cho thấy rằng đây có thể là bộ lọc thông qua cao hoặc thấp, nhưng tôi không thể tìm thấy bất cứ điều gì giải thích về mặt dễ hiểu đối với một hack như tôi tác động của các thuật toán này lên một mảng giá trị, các công trình toán học. Câu trả lời được đưa ra here, ví dụ, về mặt kỹ thuật trả lời câu hỏi của tôi, nhưng chỉ về mặt hiểu được đối với những người có lẽ đã biết cách giải quyết vấn đề.
Nó sẽ là một người rất đáng yêu và thông minh thực sự những người có thể giải thích loại vấn đề này, và làm thế nào các giải pháp làm việc, trong điều khoản dễ hiểu cho một nghệ sĩ tốt nghiệp.
Giải thích tốt, cảm ơn Rex. Tôi có nghĩ rằng một cách khác để diễn tả cùng một điều sẽ là: workingAverage = (newValue * smoothingFactor) + (workingAverage * (1.0 - smoothingFactor))? –
@Henry - Phải, đó là cách để làm điều đó mà không cần sử dụng bất kỳ bộ nhớ bổ sung nào. –
Xin chào, tôi biết đây là trễ 5 năm nhưng cảm ơn bạn đã có câu trả lời tuyệt vời. Tôi đang làm việc trên một trò chơi mà âm thanh thay đổi dựa trên vận tốc của bạn, nhưng do chạy trò chơi trên máy tính chạy chậm, tốc độ sẽ dao động dữ dội, điều đó tốt cho việc điều khiển, nhưng siêu gây phiền nhiễu về mặt âm thanh. Đây là một giải pháp thực sự đơn giản và rẻ tiền cho thứ mà tôi nghĩ là một vấn đề thực sự phức tạp. – Adam