Czytam strumień stratny i potrzebuję sposobu na odzyskanie jak największej ilości danych. Na miejscu 1 może być 1 zamiast 0 i 0, ale dokładność wynosi prawdopodobnie ponad 80%.Algorytm nadmiarowości do czytania hałaśliwego strumienia bitów
Dodatek byłby, gdyby algorytm mógł zrekompensować brakujące/zbyt wiele bitów.
Źródło z którego czytam jest analogiczne z szumem (mikrofon przez FFT), a czas odczytu może się różnić w zależności od szybkości komputera.
Pamiętam, że czytając o algorytmach używanych w CD-ROMach robi się to w 3? warstwy, więc zgaduję, że używanie kilku warstw to dobra opcja. Nie pamiętam jednak szczegółów, więc jeśli ktokolwiek może podzielić się pomysłami, które byłyby świetne! :)
Edit: Dodane dane przykładowe
Best case data: in: 0000010101000010110100101101100111000000100100101101100111000000100100001100000010000101110101001101100111000101110000001001111011001100110000001001100111011110110101011100111011000100110000001000010111 out: 0010101000010110100101101100111000000100100101101100111000000100100001100000010000101110101001101100111000101110000001001111011001100110000001001100111011110110101011100111011000100110000001000010111011 Bade case (timing is off, samples are missing): out: 00101010000101101001011011001110000001001001011011001110000001001000011000000100001011101010011011001 in: 00111101001011111110010010111111011110000010010000111000011101001101111110000110111011110111111111101
Edit2: jestem w stanie Controll dane są wysyłane. Obecnie próbuje wdrożyć proste sprawdzanie XOR (choć to nie wystarczy).
Czy możesz kontrolować, co jest napisane w strumieniu? Jeśli nie, Twój przykład CD nie ma zastosowania, ponieważ wymaga zapisania danych razem z kodami korekcji błędów. – CodesInChaos
Nie rozumiem tego pytania. Czy próbujesz stworzyć jakiś protokół komunikacyjny na nierzetelnym kanale? Lub próbując znaleźć jakiś magiczny algorytm, który jest w stanie, z cienkiego powietrza, odgadnąć, co jest nie tak czy nie? – Euphoric
Próbuję komunikować się przez dźwięk (głośnik + mikrofon). Używam określonej częstotliwości do wysyłania bitów, więc aplikacja szuka tej konkretnej częstotliwości. –