Отображение перестановок: двоичный код Хэмминга

У меня есть двоичный код Хемминга с матрицей генератора

 G = [1 0 0 0 1 0 1;
      0 1 0 0 1 1 1;
      0 0 1 0 1 1 0;
      0 0 0 1 0 1 1];

а также u это полученный вектор u = [0.5 0.3 1.3 -0.1 0.7 0.6 1.5],

Полученный вектор перестановки, основанный на уменьшающихся значениях:

v = p(u) = [1.5 1.3 0.7 0.6 0.5 0.3 -0.1]с p = (5 6 2 7 3 4 1),

Переставленная матрица генератора:

G1 = [1 0 1 0 1 0 0;
      1 0 1 1 0 1 0;
      0 1 1 1 0 0 0;
      1 0 0 1 0 0 1];

Я пытался запрограммировать этот пример, но я не могу найти точно такой же ответ, я нахожу p разные, но одинаковые v а также G1,

Мой код:

G = [1 0 0 0 1 0 1;
     0 1 0 0 1 1 1;
     0 0 1 0 1 1 0;
     0 0 0 1 0 1 1];

u = [0.5 0.3 1.3 -0.1 0.7 0.6 1.5];
[~,p] = sort(u,'descend');
v = u(p);
G1 = G(:,[p]);

Я получаю:

v = [1.5 1.3 0.7 0.6 0.5 0.3 -0.1];
p = [7 3 5 6 1 2 4]; 

G1 = [1 0 1 0 1 0 0;
      1 0 1 1 0 1 0;
      0 1 1 1 0 0 0;
      1 0 0 1 0 0 1];

В чем проблема в моем коде? Я хотел бы получить те же результаты, что и в примере.

Спасибо!

0 ответов

Другие вопросы по тегам