Tôi có một mã mô hình hóa dựa trên Bộ lọc Kalman mà tôi đã phát triển cho một ứng dụng lập bản đồ tầng điện ly khu vực gần thời gian thực. Mã này đồng hóa dữ liệu từ các cảm biến khác nhau thành bản đồ (được mô tả bằng một bộ các chức năng cơ bản) bằng Bộ lọc Kalman.
Tôi đang cố gắng mở rộng phạm vi này lên một vùng lớn hơn và nhiều cảm biến hơn, tuy nhiên phần đại số ma trận của Bộ lọc Kalman đang trở nên rất chậm, do các ma trận lớn (hàng nghìn hàng / cột) liên quan. Tôi nghi ngờ cách tốt nhất để tấn công vấn đề thời gian chạy là sử dụng thực tế là các ma trận này thường rất thưa thớt với 80% trở lên trong tổng số các phần tử bằng không. Lý do cho điều này là mỗi cảm biến có một tham số sai lệch được ước tính chung với các hệ số bản đồ. Điều này hiển thị là 1 trong cột cho cảm biến đó trong ma trận Kalman H, với số 0 trong các cột cho mọi cảm biến và bản đồ đồng hiệu quả khác. Có hàng trăm cảm biến, mỗi cảm biến đóng góp 8-10 quan sát ở mỗi kỷ nguyên, do đó có rất nhiều số không.
Tôi có thể xem xét việc triển khai các thành phần của bộ lọc Kalman bằng các thuật toán thưa thớt, cụ thể là nhân và đảo ngược *, nhưng tôi tự hỏi liệu có cách tiếp cận nào tốt hơn mà đưa ra bộ lọc Kalman ở dạng khác phù hợp hơn cho các trường hợp khi ma trận thưa thớt? Tôi biết tôi có thể sử dụng bộ lọc Kalman đồng bộ hoặc một cái gì đó tương tự, nhưng nếu có thể tôi muốn giữ lại sự tối ưu của bộ lọc Kalman tuyến tính thuần túy; tổng khối lượng dữ liệu không bị cấm, chỉ là các ma trận thưa thớt lớn xuất phát từ mô hình tuyến tính.
Về mặt triển khai, điều này được thực hiện trong IDL, tuy nhiên đại số ma trận lõi được thực hiện thông qua các cuộc gọi đến các thư viện LA được tối ưu hóa bên ngoài (cụ thể là ATLAS).
* Tôi biết rằng việc triển khai bộ lọc Kalman tối ưu sẽ tránh đảo ngược và thay vào đó sử dụng phân tách UD. Tôi đang xem xét việc cố gắng thực hiện một cái gì đó như thế này, vì vậy đó có thể là câu trả lời, nhưng tôi đang tìm hiểu xem liệu có giải pháp nào tốt hơn cho sự thưa thớt của ma trận hay không.