Tất cả các bộ mã hóa mà bạn liệt kê đều được định hướng byte và được loại bỏ bởi một vài thuộc tính của đôi. Đối với một trong những có bố trí nơi 12-bit số mũ/dấu hiệu không thực sự chơi tốt với ranh giới byte, cho khác có sự ồn ào của đầu vào của bạn. Phần đầu tiên là dễ dàng để đối phó với vô số cách, thứ hai sẽ hạn chế hiệu quả của bất kỳ nén lossless mà bạn ném vào nó. Tôi nghĩ rằng ngay cả kết quả tốt nhất cũng sẽ ít hơn tuyệt vời, tôi không biết dữ liệu của bạn nhưng tôi nghi ngờ bạn có thể đếm trên chỉ 25% tiết kiệm, nhiều hơn hoặc ít hơn.
Từ đỉnh đầu của tôi, và có lẽ vô ích vì bạn đã nghĩ đến tất cả mọi thứ trong danh sách này ...
Hãy đối xử với các dòng như số nguyên 64-bit và giá trị liền kề delta-mã hóa. Nếu bạn đã chạy các giá trị với cùng số mũ, nó sẽ có hiệu quả bằng không, cũng như có thể một số bit ảo cao. Sẽ có tràn, nhưng dữ liệu vẫn chỉ cần 64 bit và hoạt động có thể được reveresed.
Ở giai đoạn này, bạn có thể tùy chọn thử một số dự đoán số nguyên thô và lưu sự khác biệt.
Nếu bạn đã làm theo đề xuất trước đó, bạn sẽ có gần một nửa giá trị bắt đầu với 000 ... và gần một nửa với FFF ...Để loại bỏ điều đó, xoay giá trị sang trái (ROL) 1 bit và XOR nó với tất cả Fs nếu LSB hiện tại là 1. Đảo ngược là XOR với Fs nếu LSB bằng 0 thì ROR.
Suy nghĩ thứ hai chỉ đơn giản là dự đoán XORing cho giá trị thực có thể tốt hơn sự khác biệt, bởi vì bạn không phải thực hiện bước 3 sau đó.
Bạn có thể thử sắp xếp lại các byte thành các nhóm có cùng ý nghĩa với nhau. Giống như, đầu tiên tất cả các byte quan trọng nhất, v.v. Ít nhất bạn sẽ nhận được một cái gì đó giống như một số lượng lớn các số 0 với nhiều bit nhiễu nhất trước.
Chạy qua máy nén chung hoặc thậm chí RLE đầu tiên khi chạy số 0, sau đó là bộ mã hóa entropy, như bộ mã hóa hoặc bộ mã hóa dải từ 7zip/LZMA.
Có một điều tốt về dữ liệu của bạn, nó đơn điệu. Có một điều xấu về dữ liệu của bạn: nó chỉ đơn giản là một tập hợp quá nhỏ. Bạn muốn tiết kiệm bao nhiêu, chỉ kiloby? để làm gì? Hiệu quả nén sẽ bị ảnh hưởng rất nhiều nếu có sự khác biệt về số mũ giữa các giá trị liền kề.
Nếu bạn đang xử lý số lượng lớn các tập dữ liệu đó, bạn nên cân nhắc việc sử dụng tính tương tự của chúng để nén chúng lại với nhau tốt hơn - có lẽ xen kẽ chúng ở một số giai đoạn. Nếu bạn có thể sống với một số tổn thất, việc lấy ra một số byte ít quan trọng nhất có thể là một ý tưởng hay - có lẽ cả trên dữ liệu nguồn và dự đoán để bạn không giới thiệu lại tiếng ồn ở đó.
A 'lossy' thuật toán chấp nhận được vì dữ liệu của bạn không phải là rời rạc. Có tốc độ thay đổi vật lý tối đa thực tế và độ chính xác thực của cảm biến - vì vậy bất kỳ mã hóa mất dữ liệu nào với băng thông lấy mẫu đủ đều OK. –
Martin, cảm ơn câu trả lời của bạn. Về mặt kỹ thuật bạn là chính xác, nhưng không phải tất cả các quyết định thiết kế đều dựa hoàn toàn vào các cân nhắc kỹ thuật. Trong trường hợp này, chúng ta cần phải bảo toàn các giá trị chính xác vì chúng đại diện cho các kết quả "chấp nhận được" từ các quyết định lấy mẫu của một nhà cung cấp khác. –
Liên kết hiện tại với bài báo: http://cs.txstate.edu/~burtscher/papers/dcc06.pdf –