2017-02-17 14 views
1

바이너리 데이터에서 오류 수정을 읽고 연구 중이지만 사용 된 단계를 확실하게 파악할 수 없습니다. 나는 https://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction을 읽었으며 관련된 기사이며 수학에 대한 이해를 가지고 있지만 전체 과정을 철저히 이해하고자합니다.바이너리 데이터에서 오류 수정을 수행하는 프로세스는 무엇입니까?

누구든지 나에게 설명 할 수 있습니까? 또는 단계별로 말해서, 내가 어떻게 이진 표현을 사용하지 않겠습니까? "Hello, how are you?" (01001000011001010110110001101100011011110010110000100000011010000110111101110111001000000110000101110010011001010010000001111001011011110111010100111111)을 10 비트 왜곡 된 비트 중 1 개를 복구 할 수있는 충분한 오류 수정 정보가있는 이진 블록에 저장 한 다음 결과를 해석하고 어떤 비트가 잘못되었는지 판별 할 수 있습니까? 코드 나 수학의 두 줄을 모두 이해할 수 있으므로 도움이 될 것입니다. 고맙습니다!

답변

1

위키 기사에서 체계적인 인코딩 프로세스는 메시지를 유한 필드 계수가있는 다항식으로 처리하고 필요한 수의 숫자를 추가하고 (x^t로 곱하기) 생성자 다항식으로 나누고 그 다음 나머지를 뺍니다 추가 된 0 바이트. 이것은 인코딩 된 메시지 다항식이 생성 다항식의 정확한 배수임을 의미합니다.

원본 인코딩 된 메시지 다항식이 생성 다항식 (a^1,^2, ...)의 루트에서 계산되는 경우 결과는 0 집합입니다. 오류가있는 수신 된 인코딩 된 메시지가 생성 다항식의 루트에서 평가되면 원래 조건이 삭제되고 결과는 오류 위치 및 오류 값의 함수 인 "신드롬"집합입니다. 위키 기사는 오류 위치 다항식 (λ)과 "신드롬"사이의 주요 방정식을 설명합니다.

위키 기사에서는 증후군을 오류 위치와 오류 값으로 변환하는 데 사용할 수있는 4 가지 방법을 설명하지만 Berlekamp-Massey와 Euclid는 두 가지 주요 방법으로 사용됩니다.

wiki 기사에서 언급했듯이 각 오류에는 오류를 수정하기 위해 두 개의 패리티 조건이 필요합니다 (오류 당 두 개의 알 수없는 위치, 오류의 위치 및 오류 값이 있기 때문에). 10 % 오류 처리의 경우 메시지의 20 %가 패리티 여야합니다. 메시지에 30 바이트가 있으면 20 바이트의 패리티가 추가되어 50 바이트의 인코딩 된 메시지가 생성되며 그 중 최대 10 바이트는 오류를 수정할 수 있습니다.

http://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/19900019023_1990019023.pdf

당신은 내가 따르 조금 간단하게 작성이 훨씬 짧습니다 자습서를 찾을 수 있습니다 :

위키 문서에서는이 NASA 튜토리얼에 대한 링크가 포함되어 있습니다.

http://rcgldr.net/misc/ecc.pdf

당신이 (기존의 물건을 내가 제거하지 않았다 남아) 이차이나 입방 방정식을 해결처럼 필요가 없습니다 내 튜토리얼에서 몇 가지 물건이있다

, 그리고 확장 유클리드 또는 같은 물건을 실종 Berlekamp Massey 해독,하지만 시작하는 것으로 충분합니다.

+0

와우, 이것은 매우 유용합니다! 한번보세요 ... –

+0

@BenjaminBarney - 몇 년 전에 작성한 간단한 튜토리얼 링크를 포함하도록 답변을 업데이트했습니다. 따라야하는 것이 더 간단해야합니다. 관심이 있다면 Nasa 자습서와 함께 할 수있는 예제 프로그램도 있습니다. – rcgldr

+0

이것은 훌륭한 정보입니다! 답변 해 주셔서 감사합니다. 매우 흥미롭고 복잡하여 충분히 공부하고 생각해 볼 수 있습니다. –