Я читаю поток с потерями и мне нужен способ восстановить как можно больше полезной информации. Может быть 1 вместо 0 и 0 в ладони 1, но точность, вероятно, превышает 80%.Алгоритм избыточности для чтения шумного битового потока
Бонус был бы, если бы алгоритм мог компенсировать недостающие/слишком много бит.
Источник, который я читаю, является аналогом шума (микрофон через FFT), и время считывания может меняться в зависимости от скорости компьютера.
Я помню, как читал об алгоритмах, используемых на CD-ROM, делая это в 3? слои, поэтому я предполагаю, что использование нескольких слоев - хороший вариант. Однако я не помню деталей, поэтому, если кто-то может поделиться некоторыми идеями, это было бы здорово! :)
Edit: Добавленные выборочные данные
Best case data: in: 0000010101000010110100101101100111000000100100101101100111000000100100001100000010000101110101001101100111000101110000001001111011001100110000001001100111011110110101011100111011000100110000001000010111 out: 0010101000010110100101101100111000000100100101101100111000000100100001100000010000101110101001101100111000101110000001001111011001100110000001001100111011110110101011100111011000100110000001000010111011 Bade case (timing is off, samples are missing): out: 00101010000101101001011011001110000001001001011011001110000001001000011000000100001011101010011011001 in: 00111101001011111110010010111111011110000010010000111000011101001101111110000110111011110111111111101
Edit2: Я могу проверочные данные отправляются. В настоящее время пытается реализовать простую проверку XOR (хотя этого будет недостаточно).
Можете ли вы контролировать, что написано в потоке? Если нет, то ваш пример компакт-диска не будет применяться, поскольку он требует, чтобы данные записывались вместе с кодами исправления ошибок. – CodesInChaos
Я не понимаю этот вопрос. Вы пытаетесь сделать какой-то протокол связи по ненадежному каналу? Или пытаться найти какой-то волшебный алгоритм, который способен, из воздуха, угадать, что не так или правильно? – Euphoric
Я пытаюсь общаться по звуку (динамик + микрофон). Я использую определенную частоту для отправки бит, поэтому приложение ищет эту конкретную частоту. –