|
7975 | 7975 | <span class="gp">In [12]: </span><span class="n">GF</span> <span class="o">=</span> <span class="n">bch</span><span class="o">.</span><span class="n">field</span>
|
7976 | 7976 |
|
7977 | 7977 | <span class="gp">In [13]: </span><span class="n">m</span> <span class="o">=</span> <span class="n">GF</span><span class="o">.</span><span class="n">Random</span><span class="p">(</span><span class="n">bch</span><span class="o">.</span><span class="n">k</span> <span class="o">-</span> <span class="mi">3</span><span class="p">);</span> <span class="n">m</span>
|
7978 |
| -<span class="gh">Out[13]: </span><span class="go">GF([0, 0, 1, 1], order=2)</span> |
| 7978 | +<span class="gh">Out[13]: </span><span class="go">GF([1, 0, 1, 1], order=2)</span> |
7979 | 7979 |
|
7980 | 7980 | <span class="gp">In [14]: </span><span class="n">c</span> <span class="o">=</span> <span class="n">bch</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="n">m</span><span class="p">);</span> <span class="n">c</span>
|
7981 |
| -<span class="gh">Out[14]: </span><span class="go">GF([0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0], order=2)</span> |
| 7981 | +<span class="gh">Out[14]: </span><span class="go">GF([1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1], order=2)</span> |
7982 | 7982 | </code></pre></div>
|
7983 | 7983 | </div>
|
7984 | 7984 | <p>Corrupt <span class="math notranslate nohighlight">\(t\)</span> symbols of the codeword.</p>
|
7985 | 7985 | <div class="highlight-ipython notranslate"><div class="highlight"><pre><span></span><code><span class="gp">In [15]: </span><span class="n">bch</span><span class="o">.</span><span class="n">t</span>
|
7986 | 7986 | <span class="gh">Out[15]: </span><span class="go">2</span>
|
7987 | 7987 |
|
7988 | 7988 | <span class="gp">In [16]: </span><span class="n">c</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="n">bch</span><span class="o">.</span><span class="n">t</span><span class="p">]</span> <span class="o">^=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">c</span>
|
7989 |
| -<span class="gh">Out[16]: </span><span class="go">GF([1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0], order=2)</span> |
| 7989 | +<span class="gh">Out[16]: </span><span class="go">GF([0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1], order=2)</span> |
7990 | 7990 | </code></pre></div>
|
7991 | 7991 | </div>
|
7992 | 7992 | <p>Decode the codeword and recover the message.</p>
|
7993 | 7993 | <div class="highlight-ipython notranslate"><div class="highlight"><pre><span></span><code><span class="gp">In [17]: </span><span class="n">d</span> <span class="o">=</span> <span class="n">bch</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="n">c</span><span class="p">);</span> <span class="n">d</span>
|
7994 |
| -<span class="gh">Out[17]: </span><span class="go">GF([0, 0, 1, 1], order=2)</span> |
| 7994 | +<span class="gh">Out[17]: </span><span class="go">GF([1, 0, 1, 1], order=2)</span> |
7995 | 7995 |
|
7996 | 7996 | <span class="gp">In [18]: </span><span class="n">np</span><span class="o">.</span><span class="n">array_equal</span><span class="p">(</span><span class="n">d</span><span class="p">,</span> <span class="n">m</span><span class="p">)</span>
|
7997 | 7997 | <span class="gh">Out[18]: </span><span class="go">True</span>
|
7998 | 7998 | </code></pre></div>
|
7999 | 7999 | </div>
|
8000 | 8000 | <p>Decode the codeword, specifying the number of corrected errors, and recover the message.</p>
|
8001 | 8001 | <div class="highlight-ipython notranslate"><div class="highlight"><pre><span></span><code><span class="gp">In [19]: </span><span class="n">d</span><span class="p">,</span> <span class="n">e</span> <span class="o">=</span> <span class="n">bch</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="n">c</span><span class="p">,</span> <span class="n">errors</span><span class="o">=</span><span class="kc">True</span><span class="p">);</span> <span class="n">d</span><span class="p">,</span> <span class="n">e</span>
|
8002 |
| -<span class="gh">Out[19]: </span><span class="go">(GF([0, 0, 1, 1], order=2), 2)</span> |
| 8002 | +<span class="gh">Out[19]: </span><span class="go">(GF([1, 0, 1, 1], order=2), 2)</span> |
8003 | 8003 |
|
8004 | 8004 | <span class="gp">In [20]: </span><span class="n">np</span><span class="o">.</span><span class="n">array_equal</span><span class="p">(</span><span class="n">d</span><span class="p">,</span> <span class="n">m</span><span class="p">)</span>
|
8005 | 8005 | <span class="gh">Out[20]: </span><span class="go">True</span>
|
|
8014 | 8014 |
|
8015 | 8015 | <span class="gp">In [23]: </span><span class="n">m</span> <span class="o">=</span> <span class="n">GF</span><span class="o">.</span><span class="n">Random</span><span class="p">((</span><span class="mi">3</span><span class="p">,</span> <span class="n">bch</span><span class="o">.</span><span class="n">k</span><span class="p">));</span> <span class="n">m</span>
|
8016 | 8016 | <span class="gh">Out[23]: </span>
|
8017 |
| -<span class="go">GF([[0, 1, 0, 1, 1, 0, 1],</span> |
8018 |
| -<span class="go"> [1, 1, 0, 0, 0, 1, 0],</span> |
8019 |
| -<span class="go"> [0, 1, 1, 0, 0, 0, 1]], order=2)</span> |
| 8017 | +<span class="go">GF([[1, 1, 1, 0, 0, 1, 1],</span> |
| 8018 | +<span class="go"> [0, 1, 0, 0, 1, 1, 1],</span> |
| 8019 | +<span class="go"> [0, 0, 0, 1, 1, 0, 0]], order=2)</span> |
8020 | 8020 |
|
8021 | 8021 | <span class="gp">In [24]: </span><span class="n">c</span> <span class="o">=</span> <span class="n">bch</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="n">m</span><span class="p">);</span> <span class="n">c</span>
|
8022 | 8022 | <span class="gh">Out[24]: </span>
|
8023 |
| -<span class="go">GF([[0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0],</span> |
8024 |
| -<span class="go"> [1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1],</span> |
8025 |
| -<span class="go"> [0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1]], order=2)</span> |
| 8023 | +<span class="go">GF([[1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0],</span> |
| 8024 | +<span class="go"> [0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0],</span> |
| 8025 | +<span class="go"> [0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1]], order=2)</span> |
8026 | 8026 | </code></pre></div>
|
8027 | 8027 | </div>
|
8028 | 8028 | <p>Corrupt the codeword. Add zero errors to the first codeword, one to the second, and two to the
|
|
8033 | 8033 |
|
8034 | 8034 | <span class="gp">In [27]: </span><span class="n">c</span>
|
8035 | 8035 | <span class="gh">Out[27]: </span>
|
8036 |
| -<span class="go">GF([[0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0],</span> |
8037 |
| -<span class="go"> [0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1],</span> |
8038 |
| -<span class="go"> [1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1]], order=2)</span> |
| 8036 | +<span class="go">GF([[1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0],</span> |
| 8037 | +<span class="go"> [1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0],</span> |
| 8038 | +<span class="go"> [1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1]], order=2)</span> |
8039 | 8039 | </code></pre></div>
|
8040 | 8040 | </div>
|
8041 | 8041 | <p>Decode the codeword and recover the message.</p>
|
8042 | 8042 | <div class="highlight-ipython notranslate"><div class="highlight"><pre><span></span><code><span class="gp">In [28]: </span><span class="n">d</span> <span class="o">=</span> <span class="n">bch</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="n">c</span><span class="p">);</span> <span class="n">d</span>
|
8043 | 8043 | <span class="gh">Out[28]: </span>
|
8044 |
| -<span class="go">GF([[0, 1, 0, 1, 1, 0, 1],</span> |
8045 |
| -<span class="go"> [1, 1, 0, 0, 0, 1, 0],</span> |
8046 |
| -<span class="go"> [0, 1, 1, 0, 0, 0, 1]], order=2)</span> |
| 8044 | +<span class="go">GF([[1, 1, 1, 0, 0, 1, 1],</span> |
| 8045 | +<span class="go"> [0, 1, 0, 0, 1, 1, 1],</span> |
| 8046 | +<span class="go"> [0, 0, 0, 1, 1, 0, 0]], order=2)</span> |
8047 | 8047 |
|
8048 | 8048 | <span class="gp">In [29]: </span><span class="n">np</span><span class="o">.</span><span class="n">array_equal</span><span class="p">(</span><span class="n">d</span><span class="p">,</span> <span class="n">m</span><span class="p">)</span>
|
8049 | 8049 | <span class="gh">Out[29]: </span><span class="go">True</span>
|
|
8052 | 8052 | <p>Decode the codeword, specifying the number of corrected errors, and recover the message.</p>
|
8053 | 8053 | <div class="highlight-ipython notranslate"><div class="highlight"><pre><span></span><code><span class="gp">In [30]: </span><span class="n">d</span><span class="p">,</span> <span class="n">e</span> <span class="o">=</span> <span class="n">bch</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="n">c</span><span class="p">,</span> <span class="n">errors</span><span class="o">=</span><span class="kc">True</span><span class="p">);</span> <span class="n">d</span><span class="p">,</span> <span class="n">e</span>
|
8054 | 8054 | <span class="gh">Out[30]: </span>
|
8055 |
| -<span class="go">(GF([[0, 1, 0, 1, 1, 0, 1],</span> |
8056 |
| -<span class="go"> [1, 1, 0, 0, 0, 1, 0],</span> |
8057 |
| -<span class="go"> [0, 1, 1, 0, 0, 0, 1]], order=2),</span> |
| 8055 | +<span class="go">(GF([[1, 1, 1, 0, 0, 1, 1],</span> |
| 8056 | +<span class="go"> [0, 1, 0, 0, 1, 1, 1],</span> |
| 8057 | +<span class="go"> [0, 0, 0, 1, 1, 0, 0]], order=2),</span> |
8058 | 8058 | <span class="go"> array([0, 1, 2]))</span>
|
8059 | 8059 |
|
8060 | 8060 | <span class="gp">In [31]: </span><span class="n">np</span><span class="o">.</span><span class="n">array_equal</span><span class="p">(</span><span class="n">d</span><span class="p">,</span> <span class="n">m</span><span class="p">)</span>
|
|
8071 | 8071 | <span class="gp">In [34]: </span><span class="n">m</span> <span class="o">=</span> <span class="n">GF</span><span class="o">.</span><span class="n">Random</span><span class="p">((</span><span class="mi">3</span><span class="p">,</span> <span class="n">bch</span><span class="o">.</span><span class="n">k</span> <span class="o">-</span> <span class="mi">3</span><span class="p">));</span> <span class="n">m</span>
|
8072 | 8072 | <span class="gh">Out[34]: </span>
|
8073 | 8073 | <span class="go">GF([[0, 0, 0, 1],</span>
|
8074 |
| -<span class="go"> [0, 0, 0, 1],</span> |
8075 |
| -<span class="go"> [0, 1, 1, 1]], order=2)</span> |
| 8074 | +<span class="go"> [1, 0, 0, 0],</span> |
| 8075 | +<span class="go"> [1, 1, 0, 0]], order=2)</span> |
8076 | 8076 |
|
8077 | 8077 | <span class="gp">In [35]: </span><span class="n">c</span> <span class="o">=</span> <span class="n">bch</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="n">m</span><span class="p">);</span> <span class="n">c</span>
|
8078 | 8078 | <span class="gh">Out[35]: </span>
|
8079 | 8079 | <span class="go">GF([[0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1],</span>
|
8080 |
| -<span class="go"> [0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1],</span> |
8081 |
| -<span class="go"> [0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0]], order=2)</span> |
| 8080 | +<span class="go"> [1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1],</span> |
| 8081 | +<span class="go"> [1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1]], order=2)</span> |
8082 | 8082 | </code></pre></div>
|
8083 | 8083 | </div>
|
8084 | 8084 | <p>Corrupt the codeword. Add zero errors to the first codeword, one to the second, and two to the
|
|
8090 | 8090 | <span class="gp">In [38]: </span><span class="n">c</span>
|
8091 | 8091 | <span class="gh">Out[38]: </span>
|
8092 | 8092 | <span class="go">GF([[0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1],</span>
|
8093 |
| -<span class="go"> [1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1],</span> |
8094 |
| -<span class="go"> [1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0]], order=2)</span> |
| 8093 | +<span class="go"> [0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1],</span> |
| 8094 | +<span class="go"> [0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1]], order=2)</span> |
8095 | 8095 | </code></pre></div>
|
8096 | 8096 | </div>
|
8097 | 8097 | <p>Decode the codeword and recover the message.</p>
|
8098 | 8098 | <div class="highlight-ipython notranslate"><div class="highlight"><pre><span></span><code><span class="gp">In [39]: </span><span class="n">d</span> <span class="o">=</span> <span class="n">bch</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="n">c</span><span class="p">);</span> <span class="n">d</span>
|
8099 | 8099 | <span class="gh">Out[39]: </span>
|
8100 | 8100 | <span class="go">GF([[0, 0, 0, 1],</span>
|
8101 |
| -<span class="go"> [0, 0, 0, 1],</span> |
8102 |
| -<span class="go"> [0, 1, 1, 1]], order=2)</span> |
| 8101 | +<span class="go"> [1, 0, 0, 0],</span> |
| 8102 | +<span class="go"> [1, 1, 0, 0]], order=2)</span> |
8103 | 8103 |
|
8104 | 8104 | <span class="gp">In [40]: </span><span class="n">np</span><span class="o">.</span><span class="n">array_equal</span><span class="p">(</span><span class="n">d</span><span class="p">,</span> <span class="n">m</span><span class="p">)</span>
|
8105 | 8105 | <span class="gh">Out[40]: </span><span class="go">True</span>
|
|
8109 | 8109 | <div class="highlight-ipython notranslate"><div class="highlight"><pre><span></span><code><span class="gp">In [41]: </span><span class="n">d</span><span class="p">,</span> <span class="n">e</span> <span class="o">=</span> <span class="n">bch</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="n">c</span><span class="p">,</span> <span class="n">errors</span><span class="o">=</span><span class="kc">True</span><span class="p">);</span> <span class="n">d</span><span class="p">,</span> <span class="n">e</span>
|
8110 | 8110 | <span class="gh">Out[41]: </span>
|
8111 | 8111 | <span class="go">(GF([[0, 0, 0, 1],</span>
|
8112 |
| -<span class="go"> [0, 0, 0, 1],</span> |
8113 |
| -<span class="go"> [0, 1, 1, 1]], order=2),</span> |
| 8112 | +<span class="go"> [1, 0, 0, 0],</span> |
| 8113 | +<span class="go"> [1, 1, 0, 0]], order=2),</span> |
8114 | 8114 | <span class="go"> array([0, 1, 2]))</span>
|
8115 | 8115 |
|
8116 | 8116 | <span class="gp">In [42]: </span><span class="n">np</span><span class="o">.</span><span class="n">array_equal</span><span class="p">(</span><span class="n">d</span><span class="p">,</span> <span class="n">m</span><span class="p">)</span>
|
|
0 commit comments